我使用broadcastReceiver在具有闹钟功能的应用程序中触发警报.该类目前非常简单
public class MyReceiver extends broadcastReceiver {@OverrIDepublic voID onReceive(Context context, Intent intent) { Intent scheduledIntent = new Intent(context, AlarmUp.class); scheduledIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(scheduledIntent);}}
问题在于设备重启时它会被取消,因此不会触发警报.有什么方法可以使接收器在重启后自动继续运行?谢谢
解决方法:
Is there any way to get the receiver to automatically continue after a
reboot?
抱歉不行.当手机关闭时,系统会销毁所有待处理的意图.
为了解决您的问题,您应该在androID.intent.action.BOOT_COMPLETED上进行过滤,以在设备启动时调用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>
您可能会注意到还有TIME_SET和TIMEZONE_CHANGED,因为即使用户从时区到另一个时区,您也可能希望闹钟起作用.
像这样的广播.
public class YourbroadcastReceivername extends broadcastReceiver { private AlarmManagerFacade alarmManager; @OverrIDe public voID onReceive(Context context, Intent intent) { // Retreive data related to alarms Cursor cursor = context.getContentResolver().query(Alarm.CONTENT_URI, null, Alarm.ColUMN_ACTIVE + " = ? ", new String[] { String.valueOf(1) }, ""); if (cursor.movetoFirst()) { // Schedule all the active alarms. alarmManager = new AlarmManagerFacade(context); do { // Todo : Schedule alarm according to data in cursor. } while (cursor.movetoNext()); } cursor.close(); }}
(此代码来自我的一个应用程序.某些对象可能在AndroID SDK中不可用.)
为了能够重新安排所有警报,您需要将它们存储在某个地方.
例如,您可以编写自己的ContentProvider.
>借助CursorAdapter小部件,它可以与其他androID组件很好地配合使用.
>这不是最简单的解决方案,但是如果您要遵循androID准则,这就是要走的路.
可能还有其他更简单的方法来存储警报,例如使用SharedPreferences.
>易于使用.
>但是您将需要四处乱动以友好的方式存储多个警报.
最后一种选择是,您可以创建一个包含信息的对象,对其进行序列化并将其存储为SD卡上的文件.
>丑陋且不灵活.
>但实施起来并不难…
如果您想进一步了解不同的存储选项,可以在文档中阅读:http://developer.android.com/guide/topics/data/data-storage.html
希望所有这些对您有所帮助. 总结
以上是内存溢出为你收集整理的永久的BroadcastReceiver?全部内容,希望文章能够帮你解决永久的BroadcastReceiver?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)