解决思路:手动禁止APP权限之后再回到页面上,保存在内存中的数据(就是程序中的数据)被清空问题

本文探讨了一种在APP重启后保留数据的方法。通过使用persistableMode属性和onSaveInstanceState/onRestoreInstanceState方法组合,实现了在APP重启后仍能保持之前状态的功能。

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

前段时间项目中出现了个Bug,就是手动禁止运行的程序的权限,之后再返回APP,APP会重启一次,之后再禁止权限,再返回APP,程序中保存的数据就会被清空;

造成此问题的原因是手动禁止了APP权限再回到页面上,系统将旧的进程杀死,再开启一个新的进程,新进程中的activity栈信息与旧进程相同,但是页面跳转时还是需要重新走oncreate方法(一个参数的),同时还需要注意,旧进程被杀死了,所以存储的全局变量之类的数据都被清空了,在新进程中对应的全局变量都清空了。

今天看 http://www.runoob.com/w3cnote/android-tutorial-activity.html 中介绍了

android:persistableMode="persistAcrossReboots":persistableMode="persistAcrossReboots"

这个属性,说是使Activity具有持久化能力的属性,需要配合使用

public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState)
public void onRestoreInstanceState(Bundle savedInstanceState, PersistableBundle persistentState) void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState)
public void onRestoreInstanceState(Bundle savedInstanceState, PersistableBundle persistentState)

在Manifest.xml文件中需要持久化的Activity标签内添加persistableMode属性,之后在Activity中的在onSaveInstanceState方法中进行保存数据,之后在onRestoreInstanceState和onCreate(两个参数的那个)进行取值,和做想要进行的操作。将需要的全局变量使用onSaveInstanceState进行保存,在onRestoreInstanceState方法中取出。为了简便可以在BaseActivity中实现。

实验出来的是APP进行重启了,还是不够完美,但是不会是空白页了。

希望各位走过路过的大神,有什么解决此问题的方案,可以指点下。

要是错了,也欢迎指出,感谢感谢~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值