如何保存应用程序被Android或任务杀手杀害后的预定警报?

安排警报的代码。

PendingIntent sender = PendingIntent.getBroadcast(this, id, intent, PendingIntent.FLAG_UPDATE_CURRENT); AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE); am.set(AlarmManager.RTC_WAKEUP, time, sender); 

它的工作正常,但当我杀我的应用程序在任务杀手,我失去了我的日程安排的报警。 如何解决这个问题呢?

  • Job Scheduler与后台服务
  • Android:将android.net.Uri对象保存到数据库
  • Android通知在时间
  • AlarmManager的setRepeating和setInexactRepeating之间的区别
  • 在特定date的Android通知
  • Android无法通过AlarmManager传递意图附加信息
  • 使用Alarmmanager在特定时间启动服务
  • 取消另一个pendingintent中的AlarmManager pendingIntent
  • 让你的应用程序广播一个消息,因为它被杀死了,当这个消息被广播时,然后让侦听器检查服务是否还在运行..如果它没有运行它。 这将确保即使应用程序被终止,您的服务仍在运行。

    更新

    我会尝试为你创build一个stream程图

    死亡/重新启动服务

    onDestroy()方法是服务的一部分。

    我希望这有帮助。

    更新2

    我忘记提到的一件事是,理想情况下,你只需要运行一个服务实例。 所以只要查看onStart()中存在的ID,就应该== = 1来启动它,否则忽略它。

    服务等级通知方法:

    onStart():这个方法在服务启动的时候被调用

    onDestroy():这是在服务被终止时调用的方法

    BroadcastReciever类的通知方法:

    onReceive():这个方法接收所有发送给它的意图(除非被过滤)

    在BroadcastRecievers(消息广播)和服务(启动服务)上查找示例

    参考文献:

    http://developer.android.com/reference/android/content/BroadcastReceiver.html

    http://developer.android.com/reference/android/app/Service.html

    当应用程序closures时,由警报pipe理器设置的警报不会被终止,如何重新启动时,由于没有持久性,所有的警报都被os清除。 所以你需要做持久性。

    • 每次设置闹钟时都保存闹钟时间。
    • 注册接收器以启动完成。
    • 重新启动时重新设置闹钟。

       public class BootReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { //re register the alarm } } 

    的Manifest.xml

     <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> ....... <receiver android:name="BootReceiver" android:enabled="true" android:exported="true" > <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver> 

    您可以使用SharedPreference来节省时间(应该触发警报的时间或下一次应该触发警报的时间)

    用它在启动接收器上设置一个新的闹钟。