我的意思是,这将是多余的设置触发,其执行需要完成一些任务的IntentService一个BroadcastReceiver
不仅是不一定是多余的,它是一种很常见的模式。
这个解释是否正确?
号
请给当它是不正确的例子。
任一个Intent
使用具有sendBroadcast()
或startService()
。如果Intent
与sendBroadcast()
一起使用,则服务不可能直接对其进行响应。同样,如果Intent
与startService()
一起使用,接收器不可能直接响应它。因此,在其他人编写代码来使用Intent
的情况下,您必须匹配他们如何使用它。您不能单方面“更改频道”,即使用Intent
。
除此之外,总是在主应用程序线程上调用BroadcastReceiver
的onReceive()
。你不想在这里花费任何有意义的时间,因为如果你的用户界面恰好在前台,它会冻结你的用户界面。而且,一旦onReceive()
返回,清单注册的接收者实例将被丢弃,并且您的过程可能会在此后不久被终止。因此,BroadcastReceiver
不支持自己的后台线程,因为Android会忽略该线程并终止您的进程。响应系统发送的广播的常见模式是使用BroadcastReceiver
,然后让它将作品委托给IntentService
。在一举,你解决这两个问题:
IntentService
做了繁重的onHandleIntent()
,呼吁在后台线程
- ,因为它是一个
Service
,有它运行,而这样做的工作就会发信号给OS让你的过程是短暂的人生,而不再
现在,如果你是一个创建Intent
,你是一个调度是Intent
,你是一个耗时的是Intent
,你希望你的代码中使用startService()
直接调用IntentService
,那是非常好的。