u013633997
aolphn
采纳率50%
2017-08-18 04:37 阅读 891

关于Activity生命周期的问题

5

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

8条回答 默认 最新

  • 已采纳
    u013633997 aolphn 2017-08-22 06:32

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

    点赞 评论 复制链接分享
  • qq_38204686 das白 2017-08-18 04:51

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

    点赞 评论 复制链接分享
  • chenbaige legendCoder 2017-08-18 05:52

    设置ActivityA的启动模式为singletask。

    点赞 评论 复制链接分享
  • ld11620967 ld11620967 2017-08-18 06:13

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

    点赞 评论 复制链接分享
  • yansun865 yansun865 2017-08-18 08:12

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

    点赞 评论 复制链接分享
  • Gui_m 哥们OnlyRead 2017-08-18 08:18

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

    点赞 评论 复制链接分享
  • Gui_m 哥们OnlyRead 2017-08-18 08:21

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

    点赞 评论 复制链接分享
  • qq_23931287 Newbieforme 2017-08-22 05:57

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

    点赞 评论 复制链接分享

相关推荐