静态对象null问题长时间回到后台并返回



我有一个方案:

  • 已经在静态对象中存储了有关我的应用程序用户的一些信息,可以从我的应用程序中的任何地方访问对象
  • 对此一切都很好
  • 但是,当我按Home Button和App在后台处于后台时,或者我打开其他应用程序的应用程序,这些应用程序消耗记忆的应用程序的所有静态对象都会变为null
  • 我得到NullpoInterException

经过很多调试后,我认为可能是因为内存问题,但我找不到任何解决方案。

他们还有其他方法吗?

很可能,您的过程在后台时被终止。这是完全正常的。您不能假设当创建任何活动时,将填充任何static字段。两者:

  • 删除static字段或
  • 仅通过可以通过懒惰化该字段或
  • 的方法访问static字段
  • 切换到依赖注入之类的东西

在极端内存压力下,可能会出现这样的问题,系统可以杀死您的应用程序进程,将所有静态字段重置为默认值,这将是无效的。

因此,为了避免它,我建议您使用 sharedPreferences
https://developer.android.com/reference/android/content/sharedpreferences.html

您应该使用SharedPreferences存储用户信息。即使在应用程序终止之后,这也可以保留数据。用法:

SharedPreferences pref = 
getApplicationContext().getSharedPreferences("UserInfo", 0); // 0 - for private mode
Editor editor = pref.edit();
editor.putString("user_name", "User"); //store data
String userName = pref.getString("user_name"); //get data 

最新更新