我正在关注这个基础教程: http://karanbalkar.com/2013/07/tutorial-41-using-alarmmanager-and-broadcastreceiver-in-android/
正如你所看到的,它基本上做了以下事情(请纠正我,如果我错了,请):
MyReceiver.class
第一站。:MyReceiver
正在延长BroadcastReceiver
。是否可以将Intent启动到正常的Activity?
第二站。:和以前一样:BroadcastReceiver,只能启动作为服务的Intents吗?或者它可以启动正常活动吗?为什么我甚至不得不打电话给任何新的意图?为什么我不能在BroadcastReceiver中完成这项工作(比如通过互联网下载一些内容)?
我对服务有点新意,所以如果我说了一些非常奇怪的话,我很抱歉。
非常感谢你。
答案 0 :(得分:1)
BroadcastReceiver
只是在接收广播时做任何你想做的事情的手段。
Service
与Activity
不同,不会被Android操作系统轻易杀死。 Service
没有GUI。
答案 1 :(得分:1)
BroadcastReceivers可以通过意图启动您想要的任何内容(活动,服务)。
你不想在BroadcastReceiver中填充的原因是因为它们只能在服务运行的时间内存活很长时间,直到你告诉它停止为止。
如果您正在进行轮询或其他事情,您真的不需要BroadcastReceiver,您可以只使用一个服务(具体为IntentService
)与您的警报管理器。 IntentService只运行很长时间才有意义,这意味着它将自行停止,而不像普通服务那样,你必须在完成后停止它。
答案 2 :(得分:1)
为什么我不能在BroadcastReceiver中完成这项工作(比如下载 互联网上的一些内容)?
根据Android文档广播接收器在主线程上调用onReceive方法,因此您无法在onReceive中执行下载任务。因为它将冻结UI并可能在3.0及以上版本中抛出异常。
如果你想进行下载,那么最好的办法是在onReceive中触发IntentService(默认情况下,IntentService在后台线程上运行。)