在Android Studio中丢失对静态数据的引用

Jon*_*unn 2 java null static android

当我的应用程序进入后台时,我遇到了静态数据丢失实例的问题,导致空指针异常错误.

静态数据非常依赖于上下文或"状态",并且在初始化时不能一般地生成.

为了确保我保留这些数据,我是否会强制将数据写入存储,或者这是否有其他方法可以确保在将应用程序放入后台时我的静态数据不会丢失?

Ewa*_*ald 6

静态字段是类的一部分,而不是对象.当Android回收内存时,静态字段也将被回收,您将丢失其中的所有数据.请记住,操作系统可以在任何时候为应用程序在后台回收内存.

如果你有一个你希望保留的状态,你将需要将它保存到磁盘上,在Android上,依赖于在后台保存在内存中的任何东西都是一个冒险的策略.

我会为此使用共享首选项,但如果您愿意,也可以使用序列化文件流.共享偏好更容易且记录良好.

在你的onResume()方法中,你会回读这些值,你当然会将它们保存在onPause()中.这还可以让您处理例如电话呼入或用户切换到其他应用程序的情况,即使只是片刻.


ear*_*jim 5

当您的应用程序处于后台并且操作系统决定要回收内存时,它可能会终止该进程。在这种情况下,当您返回应用程序时,将重新创建该流程并且您的静态变量将未初始化。

如果你想保留重要的东西SharedPreferences,根据你的需要,把它们放在一个数据库中,或者将它们序列化到一个文件中。