当应用程序长时间返回后台并返回时,静态对象出现null问题

时间:2017-12-21 13:38:10

标签: android static

我有一个场景:

  • 在静态对象中存储了有关我的应用用户的一些信息 可以从我的应用程序的任何地方访问对象
  • 这一切都很好
  • 但是当我按下主页按钮并且应用程序在后台很长时间或我打开其他消耗内存的应用程序时,我的应用程序的所有静态对象都变为空
  • 我得到NullPointerException

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

他们是否有其他方法?

3 个答案:

答案 0 :(得分:1)

最有可能的是,您的流程在后台处理时被终止。 This is perfectly normal。您不能假设在创建任何活动时将填充任何static字段。之一:

  • 删除static字段或
  • 仅通过可以延迟初始化该字段的方法访问static字段,或
  • 切换到依赖注入等内容

答案 1 :(得分:0)

如遇极端内存压力,系统可能会终止您的应用程序进程,将所有静态字段重置为默认值,在您的情况下为空,这样的问题可能会发生。

因此,为避免这种情况,我建议您使用 SharedPreferences
https://developer.android.com/reference/android/content/SharedPreferences.html

答案 2 :(得分:0)

您应该使用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