0
回答
Android 3.x无法收到Broadcast小问题

昨天刚刚收到了第一台Android平板设备——Galaxy tab 10.1,第一次全面的在Android 3.x上调试各种代码。

第一组程序就遇到了问题,这组APP的工作是通过Broadcast来协作的,当一个APP启动时,它会sendBroadcast来告诉其他应用,在Android 2.3.x和之前的版本一直工作正常,到3.1上这些BroadcastReceiver就开始淡定的不行,不论我怎么大声广播都没反应TOT

又是没日没夜的调试,想过了各种的可能,还是不成。最后又是Google这个麻烦的制造者帮我找到了这么一组讨论,问题自然就明了了:从Android 3.1开始,为了安全考虑,任何刚刚安装的程序都不会主动运行,除非用户启动过一次。

讨论中给出的解决方案对我的情况还是不靠谱,毕竟这组应用都没有Launcher Activity,都是在收到特定的Broadcast时才开始工作的。不过知道了问题所在,解决的办法就有了。

for (App a : apps) { 
    Intent i = new Itent("ACTION_NAME"); 
    i.setComponentName(a.packageName, a.receiverClassName);  
    sendBroadcast(i); 
} 

虽然很简单的就能解决我的问题,不过折腾的过程是惨不忍睹的,一直到凌晨2、3点才睡觉。这么重大的一个改变,Google也不写一下,至少要在javadoc里写清楚吧。我也想知道问题的答案:What is a good Android reference for changes like this?

感觉Galaxy Tab的做工还是挺精良的,手感比iPad 2要来的好。Honeycomb上的Android Market使用起来很不顺手,至今没找到如何给一个应用评分。。。或者说系统整体都不顺手,各种功能不知道从哪里操作。

另外发现我一直都低估了移动设备处理器的能力,一直以为索引动不动就达16G的SD卡中的视频文件会很废时间,所以一直没给播放器加上缩略图的功能。直到亲自尝试过才知道,索引我这张目录结构混乱之极、各种测试视频相当多的SD卡用时都是用ms级的。

原文转自:http://abitno.me/android-3-broadcast-receiver-can-not-work

举报
华宰
发帖于6年前 0回/686阅
顶部