TabActivity里面添加Activity后怎么完全退出程序

junjun071308 2014-11-02 02:03:55
在网络上搜索了,大概就5个方案:
1.System.exit(0) 或者 finish 不可行

2.android.os.Process.killProcess(android.os.Process.myPid()); 不可行

3.利用广播发送退出请求,然后每一个Activity都继承一个基类Activity,在基类Activity里面完成退出 不可行

4.List<Activity> 每次有新的Activity就在他的onCreate()里面将自己添加至一个Activity管理栈,然后退出时一个一个从里面获取Activity,调用其finish()达到完全退出 该方案可行,但是问题是:这样一来,我的程序会变得很卡(程序本身要加载大量的图片,去除这个方案后和加入这个方案后卡顿效果明显(亲测),原因可能是这样一来,这个Activity就一直被Activity管理栈关联着,然后gc无法回收掉一些垃圾)

5.制造一个异常,并进行捕获,然后在自定义的Application里面处理这个异常,同时去除Android系统的默认Fc窗口,实现消无声息的异常退出,而在用户看来却是如同正常退出(原理还没搞明白,暂未测试实现

补充一下,我的TabActivity使用的是singleTask模式启动的
...全文
193 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
junjun071308 2014-11-04
  • 打赏
  • 举报
回复
引用 2 楼 peng_hope 的回复:
我之前也用List<Activity>, 但是现在不用了, 直接退出就finish, 其他的不管了... 你要是有更好的办法, 分享下...
用这个是可以的,但是再加一个,在onDestroy里面将它从链表移除出去
junjun071308 2014-11-04
  • 打赏
  • 举报
回复
引用 1 楼 birdsaction 的回复:
在你退出APP的时候,销毁不再使用的大对象,比如图片资源,静态数据资源。 退出的时候 修改标志位,让所有的耗时工作尽可能的停止,这样程序退出的时候能让DVM尽快回收垃圾, Android APP一般不容易立刻完全停止。
恩,之前退出每一个Activity的的时候没有及时该finish的finish 现在问题解决 方案是:在全局Application中定义管理的Activity链表,然后在每一个Activity的onCreate里面将其加入链表,在每一个onDestroy里面将其移出链表,这样程序既能完全退出,也能有效控制卡顿问题
peng_hope 2014-11-03
  • 打赏
  • 举报
回复
我之前也用List<Activity>, 但是现在不用了, 直接退出就finish, 其他的不管了... 你要是有更好的办法, 分享下...
Birds2018 2014-11-03
  • 打赏
  • 举报
回复
在你退出APP的时候,销毁不再使用的大对象,比如图片资源,静态数据资源。 退出的时候 修改标志位,让所有的耗时工作尽可能的停止,这样程序退出的时候能让DVM尽快回收垃圾, Android APP一般不容易立刻完全停止。

80,358

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧