按返回键,退出当前应用会进入一个最近打开的应用,然后才会回到launcher
时间:10-02
整理:3721RD
点击:
[DESCRIPTION]
具体现象如下:
打开一个应用,比如短信。
退出短信后,打开图库,然后从图库进入照相机。
快速连续按下返回键,照相机和图库退出之后会来到短信的应用界面,然后才会退出到
launcher。
所有的应用都有这样的情况。
[SOLUTION]
关于L之后,出现联系人,信息,浏览器,微信等应用按backkey无法返回或者出现在两个应用之间
循环切换的问题,这个是google AMS default设计所带来的缺陷:
联系人,通讯录,浏览器这些应用的backkey响应的是moveTaskToBack,其它backkey响应
的是moveTaskToBack的应用也是一样的会出现该问题
首先要先起动这个些应用,同时还要保证在AP Stack里还有其他的应用的
ActivityTask,普通的Activity即可
需要操作一些类似GMS包里的应用,这些应用在跳转过程中会打乱AMS原有的
ActivityStack的顺序
在GMS里面打乱ActivityStack的顺序之后,在响应backkey时,会跳转到前面打开过的某一
个应用,比如联系人或者其他响应backkey为moveTaskToBack的应用,以下都以联系人为例
之所以跳转到这些应用是因为moveTaskToBack,它不会标记Activity为finish状态。
当从联系人按backkey时,moveTaskToBack执行完成后,因为当下联系人是从AP Stack起来
的,所以在resumeTopActivity的时候又会从AP Stack中寻找下一个不为finish的Activity
resumeTopActivity找到的可能又是自己,这样的结果就会是按backkey不响应,如果找到
了下一个,比如信息,那么就会出现两个应用之间相互循环切换。其过程是:
moveTaskToBack --> resumeTopActivity --> moveTaskToBack
