我正在编写提醒应用。当我更新应用程序时,我的意思是更改gradle文件中的版本信息,应用程序中止所有提醒警报。我有重新设置警报的方法。 sqllite中已经存在日期和时间信息。我的方法是
void setAlarmsAgain(MyReminder myReminder) {
try {
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm");
Calendar calendar = Calendar.getInstance();
Date date;
date = dateFormat.parse(myReminder.getDate() + " " + myReminder.getTime());
calendar.setTime(date);
dayProcess.setReminderAlarm(myReminder.getReminderId(), calendar);
if (index == reminderStartUps.size()) {
handler.removeCallbacks(runnable);
sharedPreferences.edit().putString("versionName", appVersionName).apply();
//to keep updated version infos and to do control
} else {
handler.postDelayed(runnable, 1000);
}
} catch (Exception e) {
e.printStackTrace();
}
}
我有处理程序,可运行以不阻塞主线程。是
myReminderList = dayProcess.getRemindersForSetAlarm();
Collections.sort(myReminderList);
handler = new Handler();
runnable = new Runnable() {
@Override
public void run() {
setAlarmsAgain(myReminderList.get(index++));
}
};
handler.post(runnable);
我的问题是,当我调试应用程序(Shift-F9)警报正确执行时,没问题,但是我运行此应用程序(Shift-F10)警报未响起。也许alarmmanager.set(..)可同时执行多个,因为明确地我有多个提醒,方法无法正确执行,所以我像上面的方法一样使用了handler.postdelayed。不幸的是再次失败。警报不响。你能帮我吗?
我只尝试运行电话。我的意思是我没有使用android studio来运行我的应用程序,但它确实有效。我们可以理解,当我们从Android Studio执行应用并设置警报管理器时,它无法正常运行。我们应该只在手机上使用它。不是编辑者