Android 永久广播接收机?
我使用广播接收器在一个具有闹钟功能的应用程序中触发警报。这个类目前非常简单Android 永久广播接收机?,android,broadcastreceiver,Android,Broadcastreceiver,我使用广播接收器在一个具有闹钟功能的应用程序中触发警报。这个类目前非常简单 public class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Intent scheduledIntent = new Intent(context, AlarmUp.class); scheduledIntent.addFlags
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent scheduledIntent = new Intent(context, AlarmUp.class);
scheduledIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(scheduledIntent);
}}
问题是,如果设备重新启动,它会被取消,因此警报不会触发。有没有办法让接收器在重新启动后自动继续?Thx
有没有办法让接收器在一次故障后自动继续
重启
不幸的是,没有。当手机关机时,系统会销毁所有挂起的意图
要解决您的问题,您应该在android.intent.action.BOOT\u上进行筛选,以在设备启动时调用BroadcastReceiver
。然后您可以重新安排所有需要的警报
在你的清单上有这样的东西:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<receiver
android:name=".broadcasts.InitReceiver"
android:exported="false" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.TIME_SET" />
<action android:name="android.intent.action.TIMEZONE_CHANGED" />
</intent-filter>
</receiver>
(此代码来自我的一个应用程序。某些对象可能在Android SDK中不可用。)
为了能够重新安排所有警报,您需要将它们存储在某个地方
例如,你可以自己写
- 多亏了这个小部件,它可以很好地与其他android组件配合使用
- 这不是最简单的解决方案,但如果你想遵循安卓的指导原则,这是一条可行之路
可能还有其他更简单的方法来存储警报,比如使用
- 它很容易使用
- 但您需要以友好的方式存储多个警报李>
最后一种选择是,您可以创建包含信息的对象,将其序列化并将其作为文件存储在SD卡上
- 它既丑陋又不灵活
- 但实施起来并不难
如果您想更仔细地了解不同的存储选项,可以在以下文档中阅读:
我希望这一切对你有帮助。:) 编辑您的清单文件
<receiver android:name=".RecieverName"
android:enabled="true"
android:exported="false">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
它将在设备重新启动时自动启动
同时声明对它的许可
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
我正在使用AlarmManager自动继续,因此我需要永久存储报警名称、RepeatMode、铃声和其他首选项,并且重新启动后必须重新计算重新设置报警的间隔?是。如果你愿意,我将完成我的回答来解释这一部分。
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>