关于Receiver被调用时处于哪个进程和线程的问题

woshinia 2013-05-20 04:58:53
首先,经本人测试发现,4.2版本中已经无法单独做一个只有Recevier无Activity的程序了,Receiver收不到任何消息, 网上说的添加<category android:name="android.intent.category.HOME" />的方法也完全没用。同时,即使有Activity,但如果整个程序的进程不在运行状态,系统也无法叫起Recevier。即如果你在卸载程序的界面把程序强行停止掉,Recevier就失效了。2.2是完全没问题的,但4.2就不行了。所以

问题1,首先求有没有高手可以知道下,4.2下如何创建一个只有Recevier的程序?

问题2,既然4.2中需要程序处于运行状态才能接受消息,那么4.2中是不是只要程序中有注册Receiver,那么此程序被回收的优先级就要低于一般Activity,类似与service?

然后正题是,网上说“如果进程仅仅只是拥有BroadReceiver(一个普遍的情况是用户从不或者是最近没有和它进行交互),因此一旦它从onReceive()方法中返回时,系统就会认为进程是空的并且主动的杀死它,以便这些资源可以被其他重要的进程利用”。但如果程序既有一个Activity,又有一个Receiver,那么当Activity正在被使用时,消息到来,系统会调用Receiver中的onReceive函数。官方说明了Activity和Recevier肯定在同一个进程中,实验证明也是如此。那这个调用过程就比较难理解了,所以

问题3,系统是如何介入这个进程,并让这个进程调用onReceiver呢?求具体一点。

问题4,Activity和Recevier是否在同一个线程中呢?如果连续有2条信息触发了Receiver,是排队处理还是在各自线程中呢?
...全文
187 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
woshinia 2013-05-21
  • 打赏
  • 举报
回复
再顶一个再。
woshinia 2013-05-20
  • 打赏
  • 举报
回复
自顶一个先。

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧