最近在使用某app的时候出现了一个小问题,体验不是很好:打开A应用app进入n层页面后,点击home键退到桌面,然后打开其他app,再次按home键退到桌面,此时点击A应用的app图标时,居然打开的是启动页面,而不是上次点击home键的的页面。然后我试了试我们的app,发现不存在这个问题。然后经过分析试验发现了问题:
分析问题:
既然不同的app会出现这个差异,那么应该首先定位是在功能清单文件中配置的问题,首先我想到的是application标签的配置,application下的很多配置不同却是可以影响很多的问题,不过我看了看他们app的application下的标签没有任何问题,排除这个原因。build文件只有在build apk的时候才会起作用,所以也不会影响这个问题,排除掉。那么这个时候就只剩下启动页的功能清单配置了,唯一可以影响的就是启动页的配置有不同了,但是但是我看了看他们的启动页配置也没有什么不同,唯一的不同就是启动模式他们改了,不是stadrand的,那么真的是这个问题造成的吗?很不幸,经过试验却是是它造成的问题。
解决问题:
将启动页的启动模式改为默认的standrand模式。
引申问题:
我们知道启动页却是很多时候是需要启动模式为非standrand的,比如说当app需要在浏览器中打开的时候等等。那么我们为了解决启动的问题,将他设置为standrand的了,怎么解决后续问题呢?其实安卓早就想到这个问题,那就是代码中动态制定activity的启动模式,例如动态制定activity的启动模式为singletop的代码如下:
Intent intent = new Intent(activity, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra(TYPE, type);
activity.startActivity(intent);
当然其他类型的启动模式也可以动态制定,请自行百度吧。