Android长时间锁屏后界面出现黑屏或输入无反应情况处理

本文探讨了解决Android中Activity因内存不足被系统回收的问题。提供了两种方法:一是利用onSaveInstanceState保存关键数据;二是通过onResume刷新Activity并初始化数据。但第二种方法可能会导致锁屏后文本框内容丢失。

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

当Activity界面在加载了控件过多之后,容易出现卡顿现象,占用手机的系统内存,那么在长时间锁屏,在锁屏重启界面之后,如果不是并没有出现Crash崩溃,或者OOM情况的发生,那么应该就是Activity被回收了,如果手机内存减少就会导致系统回收不活跃的Activity的。
这是因为锁屏之后,activity将会在后台运行,由于手机内存不足,会被系统回收掉,当你解锁的时候,系统会尝试帮你重启activity,但是这时就会出现界面黑屏,或者界面可见正常,但是输入文本框或者点击列表选择,没有任何反应。
这里有两个方法可以实现,
第一个方法是在activity的onSavedInstance方法中,把activity里面一些关键的数据保存在bundle里面,这样当activity由于内存不足被回收的时候,这些数据会被保存下来,然后当页面恢复的时候,也就是重新创建了activity,在onCreate的参数中(bundle),你可以从bundle中拿到你保存的那些数据,记得要首先把bundle判断null,因为正常启动的bundle是null,除非是系统帮你恢复,并且你保存了bundle。
第二个方法是在onResume中对数据进行初始化,并且在onResume中对Activity进行刷新操作,

 @Override
    protected void onResume() {
        super.onResume();

        onCreate(null);
        initData();//初始化数据方法
    }`

但是这里会出现一个Bug,那就是在锁屏之后重启界面,之前在这个界面的文本框中输入的东西将会被全部清空,重新输入。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值