安卓:每天、每周和每月重置解析后端对象



我正在尝试使用警报管理器每天、每周和每月重置解析 int 对象。我有三个对象dayObject,weekObject和monthObject,它们运行和更新文本视图。但是应用程序崩溃并显示错误值可能不为空。请帮忙!!

onCreate()

Intent iToday = new Intent(this, TodayReset.class);
iToday.putExtra("createdAt", createdAt.getTime());
piToday = PendingIntent.getBroadcast(this, 0, iToday, 0);
alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, today.getTime(), AlarmManager.INTERVAL_DAY, piToday);

在接收((:我从日历中获取今天,周和月日期。然后我检查条件并更新解析后端。

ParseQuery<ParseObject> query = new ParseQuery<ParseObject>("Pattern");
query.whereEqualTo("username", ParseUser.getCurrentUser().getUsername());
query.orderByDescending("createdAt");
query.getFirstInBackground(new GetCallback<ParseObject>() {
   @Override
   public void done(ParseObject object, ParseException e) {
     if(e == null && object != null) {
       totalValue = object.getInt("totalValue");
       weekValue = object.getInt("weekValue");
       monthValue = object.getInt("monthValue");            
     } else {
       Log.i("RetErr", e.getMessage());
     }
   }
});
ParseObject pattern = new ParseObject("Pattern");
pattern.put("username", ParseUser.getCurrentUser().getUsername());
pattern.put("totalValue", totalValue);
pattern.put("todayValue", 0);
pattern.put("weekValue", weekValue);
pattern.put("monthValue", monthValue);
pattern.save();

我每周和一个月都在重复相同的内容。我正在检索所有对象,因为当我只保存一个特定对象时,其他对象显示未定义。因此,我检索旧值并再次保存。

将新 Parse 对象的创建移动到 done(( 中,如下所示。因为查询是在后台完成的,所以在您尝试使用 totalValue 等之前不会完成。

ParseQuery<ParseObject> query = new ParseQuery<ParseObject>("Pattern");
        query.whereEqualTo("username", ParseUser.getCurrentUser().getUsername());
        query.orderByDescending("createdAt");
        query.getFirstInBackground(new GetCallback<ParseObject>() {
            @Override
            public void done(ParseObject object, ParseException e) {
                if(e == null && object != null) {
                    totalValue = object.getInt("totalValue");
                    weekValue = object.getInt("weekValue");
                    monthValue = object.getInt("monthValue");
                    ParseObject pattern = new ParseObject("Pattern");
        pattern.put("username", ParseUser.getCurrentUser().getUsername());
        pattern.put("totalValue", totalValue);
        pattern.put("todayValue", 0);
        pattern.put("weekValue", weekValue);
        pattern.put("monthValue", monthValue);
            pattern.save();

                } else {
                    Log.i("RetErr", e.getMessage());
                }
            }
        });

最新更新