Android警报管理器同时设置多个问题

问题描述 投票:1回答:1

我正在编写提醒应用。当我更新应用程序时,我的意思是更改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 alarmmanager
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.