2013年8月12日

记一个奇怪的 android bug

莫名其妙摇身成为 android 开发是个挺神奇的事情,有机会的话以后再细说。

今天的问题是发现自己的应用在三星的 Galaxy S4(GT-I 9505)上行为诡异:

  • 应用启动之后界面没显示出来,屏幕仍保持启动前的样子
  • 通过 Toast 可以看得出来应用还是启动了的,而且可以操作,也就是说,除了界面没显示,应用是可以操作的
查了一圈 log 也没看到什么有价值的信息,最后只能祭出二分法排查。最后元凶是这么一行:
getWindow().setFlags(FLAG_HOMEKEY_DISPATCHED);
这行是为了拦截 home 键加上的。无论怎么看都跟前述故障八杆子打不着。去掉之后,应用行为一切正常——幸亏我这个应用里拦截 home 键不是硬需求,可以等以后绕不开了再深入研究背后的故事。

这几天的感受,三星的 android 手机适配起来问题比 MTK 还要多,特记此备忘。