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

问题描述 投票:0回答:3

我有一个场景:

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

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

他们还有其他方法吗?

android static
3个回答
1
投票

最有可能的是,您的进程在后台处于终止状态。 This is perfectly normal。您不能假设在创建任何活动时将填充任何static字段。或者:

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

0
投票

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

所以,为了避免它,我建议你使用SharedPreferences https://developer.android.com/reference/android/content/SharedPreferences.html


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 
© www.soinside.com 2019 - 2024. All rights reserved.