1、设置入口的activity,需要是展示桌面的activity,而不能是启动页。比如常规app都是先进入splashActivity,然后进入主页HomeActivity。但是在android 桌面app中,必须入口页就是主页。(因为点击Home按键时会触发入口页,而通常点击home按键是进入桌面程序的主页)
2、主页不能设置android:windowIsTranslucent=true,比如在桌面中打开设置app后,点击Home按键,会导致被背景透明覆盖,且崩溃。我使用到的解决思路有:
- a、开始以为是生命周期中的某一个环节导致主页崩溃从而点击home按键又会重建onCreate,在每一个生命周期中打上日志并注释掉逻辑代码。最后发现生命周期正常调用。只是在点击HOme按键的时候会重新调用onCreate方法,很是郁闷。
- b、当前类代码排除法,以为是HomeActivity主页里面有些逻辑影响了生命周期。然后就一点点把onCreate中的代码删除,最后主页只有背景图片的时候,还是发现还是会复现上述bug。
- c、通过DebugActivity复现比较法。重新新建一个DebugActivity,从0开始搭建一个桌面程序,此时整个程序仅仅启动这一个页面,排除其他页面造成的干扰,发现DebugActivity却可以正常使用,并且点击home按键也能正常回到桌面主页DebugActivity,此时比较DebugActivity和HomeActivity对应的xml文件代码以及清单文件,最后发现在清单文件中的启动模式和theme不一致,最终比较才确定是windowIsTranslucent导致。
代码如下:
<item name="android:windowIsTranslucent">true</item>
网友评论