Bea*_*ear 13 service android broadcastreceiver
那么,在android中,在broadcastReceiver中执行某些操作和在broadcastReceiver中调用另一个服务之间有什么区别?我认为他们都在后台运行,对吗?
实际上,我要做的是:
在每天的特定时间,从数据库下载用户事件(例如:早上9点吃早餐),并设置AlarmManager以显示有关事件的通知.
现在我设置了一个报警管理器来完成上述任务.如果我在BroadcastReceiver中直接完成此操作或在BroadcastReceiver中调用服务来完成此操作,我感到很困惑.
谢谢.
如果您的行动需要更长的时间(连接到互联网可能需要一些时间),您可以为此目的从接收方呼叫服务.广播接收器受到最大限度的时间限制,必须完成.
流程生命周期
当前正在执行BroadcastReceiver的进程(即,当前在其onReceive(Context,Intent)方法中运行代码)被认为是前台进程,并且除非在极端内存压力的情况下,系统将继续运行该进程.
从onReceive()返回后,BroadcastReceiver不再处于活动状态,其托管进程与其中运行的任何其他应用程序组件一样重要.这一点尤其重要,因为如果该进程只托管BroadcastReceiver(用户从未或最近没有与之交互的应用程序的常见情况),那么从onReceive()返回时,系统会认为其进程为空并且积极地杀死它使资源可用于其他更重要的过程.
这意味着对于运行时间较长的操作,您通常会将一个服务与BroadcastReceiver结合使用,以便在整个操作期间保持包含进程处于活动状态.
归档时间: |
|
查看次数: |
8018 次 |
最近记录: |