关于Activity生命周期的问题

各位老司机,请教个问题。
前提条件:
Android APP 有两个Activity,SplashActivity(启动页),ActivityA。当APP启动完成会把SplashActivity结束掉,然后Activity栈里只存在ActivityA。
问题发生场景:
APP退到后台了(ActivityA没有被finish掉依然存在),点击按钮(菜单键)从APP列表中台选中我自己的APP打开,这个时候居然会创建SplashActivity。
请问一下为什么会发生这种情况?

8个回答

我的APP返回键有自己处理,将task进行了moveback操作且没有结束Activity,所以返回键不会导致Activity销毁,我遇到的问题应该是界面被回收但是进程还存在,界面不存在APP切换到前台自然要重新创建了。之前是我搞错了,我以为我的界面没有被回收,所以那里不能理解。

有可能是其他的操作,导致线程阻塞,不能及时回收

这种情况是这样的,虽然你destroy了,finish了,但是GC并不是实时回收的,你程序挂载在后台,再次点击你的app,依然会打开你的启动项,这是因为安卓rom的封装,不是程序的问题。如果你想直接打开Activity A,就写个ActivityManage管理就好了。

u013633997
aolphn 嗯,也许是我之前想错了,可能Activity真被回收了,如果是这样的话那我可以理解这种行。’
大约 3 年之前 回复

你可以搜下Activity调用Ondestroy后没有释放占用资源

你是怎么退出到后台的?如果是通过返回键,那么其实你的ActivityA已经被释放了,只是有残留进程在,下次进入默认重启;但如果是通过HOME键返回的,那就可能是手机其他进程的内存占用太多,这个被kill了,但是这种情况可能性不大,我所能想到的就这些,能力有限,见谅

我记得以前也遇到过 这是andriod 默认的机制吧 你自己百度改改
http://blog.csdn.net/fzkf9225/article/details/76136335

u013633997
aolphn 嗯,我主要是问为什么会出现这个异常场景,正常情况SplashActivity根本不会重新创建的。只有极少数情况。而且我的进程和task以及Activity都没有被回收掉。
大约 3 年之前 回复

设置ActivityA的启动模式为singletask。

u013633997
aolphn 我问为什么会出现这个情况,我是用默认的启动模式,但我要用一些Activity的Result返回值,所以还不能设置成singleTask
大约 3 年之前 回复

添加一个AppManager类,管理Activity和App
http://www.apkbus.com/blog-847095-68665.html

u013633997
aolphn 管理Activity的列表我有,我是问一下为什么会出现这种情况。按理说APP所属的task是存在的,那么应该直接把task调出来即可,没理由重新启动SplashActivity。PPPPS:目前只在一部手机上遇到这种情况,也不是比现的。
大约 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐