我即将在我的应用程序中插入一些提醒。他们每个人都会有不同的时间。即使应用程序未运行,也可以阅读有关BroadcastReceiver的静态版本。仅当应用程序处于活动状态时才动态版本,正在onPause上删除并在onResume上重新创建。 因为我插入提醒,我是否需要为每个提醒创建静态接收器?在不同的时间处理提醒是否正确?Android动态和静态BroadcastReceivers
0
A
回答
0
Static or Dynamic?我们可能会认为提醒可能会设置更长的时间,然后才会被触发。因此,在您的情况下使用静态广播接收机更安全。
在您的清单文件:
<receiver android:name=".YourBroadcastReceiver"/>
独立的接收器为每个提醒?其实没有。您可以将所有提醒指向一个静态接收器,并且可以毫无问题地处理所有这些提示。如果您想要在需要执行不同操作的提醒类型之间分开,可以将一些stringExtra放到您的意图中,并在广播接收器中的if-else
声明中提取该提示。这是一种方式。
如果将来将提醒设置为明显较长的日期:您可能知道您正在使用alarmManager设置提醒。但是,如果系统重新启动,所有警报都将被删除。因此,您可以考虑在您的提醒中添加某种内容。您可以存储大约在SharedPreferences/SQLite的分贝或你喜欢,只要你可以轻松地阅读和写数据的任何其他方法的提示信息。然后,您需要在系统重新启动后重置警报。为此,您需要再添加一个broadcastReceiver
,它将侦听系统重新启动操作完成并在收到它时运行。然后,您在那里重新创建警报,或者运行单独的intentService
以重新创建警报。
在您的清单文件:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<receiver android:name=".BootCompletedReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
0
虽然我们定义了一个动态的广播接收器,提醒只当应用程序被激活给用户,如果没有广播接收器将不会被调用,用户将无法获得通过提醒通知触发。为此,广播接收机必须声明为静态,以便即使应用程序已关闭,提醒也会被触发。请记住报警是如何工作的:)
相关问题
- 1. 2 BroadcastReceivers和1静态变量
- 2. 静态和动态编程
- 3. 静态和动态库
- 4. 静态和动态类型
- 5. 动态和静态数组
- 6. 静态和动态绑定
- 7. 静态和非静态
- 8. 静态/动态绑定和静态/动态调度有点令人困惑
- 9. 编辑静态控制静态和动态
- 10. Android NDK和静态库
- 11. 的Android - getResources()和静态
- 12. 静态和动态绘图/钛画
- 13. UICollectionView与动态和静态单元格
- 14. Zend - 静态和动态路由
- 15. 避免静态和动态铸造
- 16. 动态作用域和静态范围
- 17. 静态和动态MFC链接
- 18. 函数的静态和动态的父
- 19. 静态和动态库链接
- 20. 动态和静态绑定在Java中
- 21. 结合动态和静态文本
- 22. 静态和动态链接库
- 23. 静态boost.test库和动态boost.test库
- 24. 混合静态和动态元素头
- 25. RDS参数组 - 动态和静态
- 26. 动态绑定和静态绑定
- 27. 静态库和动态库:混乱
- 28. 静态和动态链接沙盒
- 29. NumPy和SciPy。静态与动态加载
- 30. ng-model - 动态和静态结合
你的意思是2个broadcastreceivers?有一个处理BOOT_COMPLETED是不够的?另一个问题是接收者如何获得警报管理员的身份。 – learner
是的,两个broadcastReceivers。您也可以在1个接收器中实现所有功能。但为什么? BOOT_COMPLETED接收器旨在重置警报,而第二个接收器负责对警报作出反应。他们的逻辑是不同的,为什么不把他们分开?有几个广播接收机是完全可以的。 – Marat
关于闹钟的ID。我不知道你如何在你的情况下实施它。因此,我们假设您在创建待定意图之前将id作为额外的传递给您的意图。当闹铃时间到时,系统触发广播接收方在意图内部显示意图。然后,在'onReceive'方法中,您可以获得额外的内容。从而可以提取警报的ID – Marat