当你按下手机的Home键的时候,系统会默认调用程序栈中最上层Activity的stop()方法,然后整个应用程序都会被隐藏起来,当你再次点击手机桌面上应用程序图标时,系统会调用最上层Activity的OnResume()方法,此时不会重新打开程序,而是直接进入,会直接显示程序栈中最上层的Activity
不过。。。按home键,程序还会在后台运行,activity不会destroy,此时还是占用系统内存的,当运行某项占用内存的动作,内存不够,系统会自动回收不常用的内存。你的程序在别的手机上跑时候很可能是被干掉了。所有每次都会重新运行。。。
长按home键进入 与 点击图标进入的生命周期执行有那么一点不一样的。。
解决方法一、
在manifest里面在你的程序启动的第一个页面的声明里,去掉android:launchMode="singleTask"等相关就ok了
解决方法二、
如果你必须要实现这个功能的话 可以参考下 下边这篇文章。
http://dev.10086.cn/cmdn/wiki/index.php?edition-view-6259-1.html
思路大致就是: 按home键时记录当前的activity(可以用SharedPreferences),下次执行程序的时候判断SharedPreferences有没有值,有的话就跳到这个activity,同时通过onSaveInstanceState 拿到之前的状态。完成后记得把SharedPreferences弄空,不然你正常进入程序都不好使了。
PS: 法一可能有时候不好使。。。法二是我的想法,没用过。