android 销毁一个进程,Android销毁活动,查杀进程

嗨,我想知道Android如何管理内存,我无法在任何地方找到准确的答案。 假设我有一个在当前活动堆栈上有5个活动的应用程序(4个被停止,1个被恢复),没有连接服务。我按HOME按钮,以便我的所有活动都停止。 我启动了一些其他耗费内存的应用程序,整体设备内存开始不足。而问题是Android销毁活动,查杀进程

...我的应用程序会发生什么?

系统能否销毁一个或一些我的活动来恢复内存?

系统会杀死我的应用程序的整个过程吗?所有的活动都会被很好地摧毁吗?

当我完全死亡后回到我的应用程序时会发生什么?它会从开始(像第一次开始)开始,还是会尝试恢复活动到previeous状态/如果是 - 它只是堆栈顶部的一个还是全部?

UPDATE:

之前问这个问题,我已经看到了活动的生命周期几次,但它并没有回答我的问题。 我做了一些测试,我有一些答案。 DDMS中的“停止过程”是测试的一个线索。

我没有测试的回答问题1,但作为指导说:

如果活动暂停或停止,该系统可以通过从内存中删除该活动 要求它完成,或者干脆就杀掉它的 进程。

看起来,一个或多个活动可以轻轻地销毁(使用onDestroy方法)而不会终止进程。当你回到他们的时候,你会得到(onCreate + bundle)。

问题2回答:

YES。通常系统会杀死整个过程,这意味着包括活动和静态字段在内的所有数据都会被销毁。这不是很好 - 你不会为任何暂停/停止的活动获取onDestroy或finialize()。这就是为什么在onPause方法之前调用saveInstanceState()的原因。 onPause基本上是您应该保存某些内容的最后一种方法,因为在此方法之后,您永远无法看到onStop或onDestroy。系统可以杀死所有对象的进程,无论他们持有什么以及他们在做什么。

问题3回答:

,当你回到一个杀死的应用会发生什么事?

在Android 2.2之前 - 应用程序将从开始启动,并启动启动器。

从2.2开始 - 系统将恢复以前的应用程序状态。这是什么意思?这意味着最后可见的活动将被重新创建(onCreate + bundle)。活动堆栈会发生什么?堆叠很好,但其上的所有活动都已死亡。当您通过后退按钮返回时,它们中的每一个都将被重新创建(onCreate + bundle)。 有关于一两件事:

通常,系统清除一个任务(删除所有活动从 堆的根活动上文)在某些情况下,当用户 重新选择从该任务主屏幕。通常,如果 用户在一段时间内未访问任务,例如 30分钟,则完成此操作。

结论?

不要以为处理活动的旋转问题可以通过机器人来解决 :configChanges =“方向”。当你这样做时,你会得到许多其他的问题,你甚至不知道。

用DDMS测试你的应用程序 - 停止进程按钮。 See This

使用静态变量时要小心。不要认为当你在活动1中初始化它们时 - 你将在活动2中初始化它们。初始化全局静态的唯一安全位置是Application类。

请记住,您可能永远不会看到onStop或onDestroy。关闭文件/数据库,停止onPause中的下载程序。当你想让应用程序在BG中执行某些操作时 - 使用前台服务。

这将是它...希望我和我的essey :)帮助

2013-01-17

Mark

+0

对于您的设想,这5项活动是来自同一个应用程序还是来自多个不同的应用程序? –

+0

“我有一个在当前活动堆栈上有5个活动的应用程序”当然,它们都来自我的,同一个过程应用程序。 –

+3

谢谢你,这正是我的问题......你的问题和答案帮了我很多。 –

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值