Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安卓:当设备开启时,触发所有未触发的警报_Android_Alarmmanager_Power Off - Fatal编程技术网

Android 安卓:当设备开启时,触发所有未触发的警报

Android 安卓:当设备开启时,触发所有未触发的警报,android,alarmmanager,power-off,Android,Alarmmanager,Power Off,在我的应用程序中,用户设置了一些提醒,我必须在时间到来时发出警报。目前,我使用AlarmManager.RTC作为AlarmManager的一种类型 它在按照指令工作时起作用 //设置闹钟-注意,如果手机处于开机状态,此闹钟将丢失 //断断续续 当我打开设备时,是否有任何方法可以触发错过的警报 请注意,我不想唤醒设备,我只是想在他们打开设备时提醒他们 PS:我已经阅读了文档,但是我没有找到我的选择 当我打开设备时,是否有任何方法可以触发错过的警报 第1步:有一些方法来跟踪自己遗漏的内容,比如通过

在我的应用程序中,用户设置了一些提醒,我必须在时间到来时发出警报。目前,我使用AlarmManager.RTC作为AlarmManager的一种类型

它在按照指令工作时起作用

//设置闹钟-注意,如果手机处于开机状态,此闹钟将丢失 //断断续续

当我打开设备时,是否有任何方法可以触发错过的警报

请注意,我不想唤醒设备,我只是想在他们打开设备时提醒他们

PS:我已经阅读了文档,但是我没有找到我的选择

当我打开设备时,是否有任何方法可以触发错过的警报

第1步:有一些方法来跟踪自己遗漏的内容,比如通过跟踪数据库中的事件状态


步骤2:设置开机接收器,以查找手机何时重新启动。在那里,安排未来仍然存在的任何警报,并决定如何处理过去发生但错过的警报,例如,发出通知指出错过的事件。

您必须手动执行此操作

一种方法是监听手机关机事件:

<action android:name="android.intent.action.ACTION_SHUTDOWN" />
在设备关闭前,节省关闭时间

然后监听设备启动:

<action android:name="android.intent.action.BOOT_COMPLETED" />

编写您自己的逻辑,确定在停机期间会触发哪些警报,并使用AlarmManager立即触发这些警报。

AlarmManager将在您的手机开机之前发出所有警报

当设备处于休眠状态时,注册的报警将被保留,并且可以 如果设备在这段时间内关闭,可以选择唤醒设备,但是 如果关闭并重新启动,将被清除

现在唯一适合的方法是通过数据库跟踪kepp。 放置一个扩展BroadcastReceiver的附加类。在OnReceive方法中,您可以在设备重新启动时重新生成警报。显然,如果您有一些跟踪,即数据库。 此处可以看到为您的目的设置广播接收器。
希望这有帮助。

在Manifest.xml中注册broadcastReceiver

<receiver
    android:name=".AlarmRestartReceiver"
    android:enabled="true">
    <intent-filter>
        <action 
          android:name="android.intent.action.BOOT_COMPLETED" />
    </intent-filter>
</receiver>

因此,使用android.permission.RECEIVE_BOOT_,我的应用程序会自动启动吗?不,它只允许你的应用程序在设备启动时监听。然后你可以设置一个广播接收器,在它的onReceive中,你可以为设备启动时想要发生的事情设置逻辑。我也在寻找一个解决方案,当应用程序通过play更新时,此时所有警报都会丢失。因此,如果应用程序是由用户启动的,您首先可以设置一个新警报。但这可能太晚了。我的问题是如何解决这个问题?@drindt:此时所有警报都丢失了——我不知道发生了这种情况。我想你可以观察行动包被替换,以发现你已经被更新并再次设置闹钟。谢谢你的回答。我找到了这个:但我还没试过。
<receiver
    android:name=".AlarmRestartReceiver"
    android:enabled="true">
    <intent-filter>
        <action 
          android:name="android.intent.action.BOOT_COMPLETED" />
    </intent-filter>
</receiver>
override fun onReceive(context: Context, intent: Intent?) {
   if (intent?.action == "android.intent.action.BOOT_COMPLETED") {
      // re-register all alarm here..
   }
}