昨天刚刚收到了第一台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级的。