天下Android是一家,通过别人分享的文章,解决了大部分问题。那么我解决的独特的问题,也应该分享出来,帮助Android开发的兄弟们。
今天,在项目中遇到这么一个问题:
页面之间跳转,正常点击,正常跳转。但是一旦快速点击,或者双击,页面会回到Launcher界面,状如闪退,让人非常不爽。但其实不是闪退,因为日志中没有任何异常。重新点击图标,则会直接打开要跳转到的页面。说明跳转过程中并没有Crash发生。
最初是怀疑双击导致的两次执行跳转,但是经验证不是,加了双击过滤,将两次双击变成只执行一次点击事件也还是会回到Launcher界面。
根据现象,只要快速点击,就会回到Launcher;正常点击,正常执行。无奈实在是没办法根据现象找出原因,其实最后当我解决问题之后我发现,这个现象就是这么无厘头,现象给不了原因任何提示,因为解决办法也无法解释现象。总之解决了就好。
是这样解决的,我通过搜索相关帖子注意到了Android Theme中的android:windowIsTranslucent属性,这个属性为true则应用该属性的页面window为透明。应用这个属性的目的是解决页面间跳转有时候会出现的黑屏问题。
我在APP Theme中使用了该属性,因此所有页面背景Window都为透明的,所以我想是不是透明背景导致了退回Launcher?
然后就实验了一下,把要跳转到的页面的该属性定义为false,不透明。然后双击,发现问题解决。过程就是这样。至于为什么正常点击正常,快速点击异常,目前的推测是:页面A跳转页面B。正常点击的话,A进入后台,B被创建并显示。则正常。
快速点击,A进入后台,B被创建正要显示,A又接收到点击事件,因此导致A进入后台,B被创建这个中间过程异常,所以两个页面都停留在了中间状态,也就是透明背景的情况,两个都透明了,那么就显示Launcher了。这只是一个猜想。