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

当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,那就是在锁屏之后重启界面,之前在这个界面的文本框中输入的东西将会被全部清空,重新输入。

你可能感兴趣的:(android)