首页 > 解决方案 > Android报警管理器同时设置多个问题

问题描述

我正在编写一个提醒应用程序。当我更新应用程序时,我的意思是更改 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,就像上面的方法一样。不幸再次失败。闹钟不响。你能帮助我吗 ?

标签: androidalarmmanager

解决方案


我试过只运行手机。我的意思是我没有使用 android studio 来运行我的应用程序并且它有效。我们可以理解,当我们从 Android Studio 执行应用程序并设置警报管理器时,它无法正常工作。我们应该只在电话上使用它。不是编辑


推荐阅读