android 进程被回收,Android开发进阶:Activity和进程的回收和状态恢复

当Android系统内存不足时,后台进程会被回收,导致Activity被销毁。在App切回时,系统根据保存的task栈信息恢复Activity状态。Intent中的数据在进程回收后仍可恢复,但不应在Application或全局单例中存储数据,应使用SharedPreference、临时文件或数据库保存运行时数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

不管是安卓的官方文档还是源码注释,处处可见“从 Activity A 跳到 Activity B,当系统内存不足时 A 可能会被回收……”,而且没有明确说明 A 和 B 是否属于同一个 app 或进程。

但是,在官方给的 Activity 生命周期图中,却说内存不足时低优先级的进程将被杀死。

72ccb08e7f34

image.png

那么,内存不足时,到底是 Activity 被回收了呢,还是进程被杀死了呢,还是二者都出现了呢?

答案是,Activity 被回收了,而且进程被杀死了,而且一般情况下该进程是后台进程。当内存不足时,系统会杀死优先级低的后台进程,进程内的 Activity 肯定也就被回收了。

这就引申出另一个话题:app的进程被回收后,当用户切回app时,我们应该怎样保证activity的状态得到恢复呢?

我们知道,在安卓开发中,当一个activity要启动另一个activity时要传递数据的话,普遍的做法是将数据放在intent中:

Intent intent = new Intent(MainActivity.this, SecondActivity.class);

intent.putExtra("data", "Data to Second Activity");

startActivity(intent);

在SecondActivity中可以通过intent.getStringExtra("data")获得数据。如果这个数据要往更深层的activity传递的话,就要继续将其放入启动后续activity的intent中

String data = intent.getStringExtra("data");

// do something with data ....

Intent intent = new Intent(SecondActivity.this, ThirdActivity.class);

intent.putExtra("data", data);

startActivity(intent);

很多安卓开发的新手都会问,如果这个数据到在多个activ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值