首先,经本人测试发现,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,是排队处理还是在各自线程中呢?
Android多线程