对象变为空

Pon*_*rai 5 java performance android garbage-collection

嗨我们在Android应用程序中面临一个奇怪的问题.在我们的应用程序中,当我们启动应用程序(第一个活动)时,我们将所有需要的对象/数据存储在Common对象(称为对象A)中.我们将上下文本身存储在该对象中.每当我们在应用程序中需要上下文时,我们就会从对象A获取上下文并使用它.除了以下情况外,所有案件的工作正常.

i)当我们的应用程序处于后台时,我们玩了一些高端游戏.现在我们通过最小化屏幕(最近的应用程序)返回应用程序.突然,应用程序崩溃了.
ii)如果我们通过设置强制停止应用程序,并通过最小化屏幕返回到应用程序,则会发生同样的崩溃.

两种情况,对象A都变为空(它可能被GC删除),因此所有依赖于对象A的操作都会获得异常.

为什么会这样?我们如何阻止GC收集对象A?我们如何处理强制停止?请提出任何想法.

Tan*_*.7x 7

为什么会这样?

其他应用程序也需要内存才能运行.假设Android将无限期地将您的数据保存在内存中是不合理的.

我们如何阻止GC收集对象A?

别.找到解决问题的其他方法.

我们如何处理强制停止?请提出任何想法.

最后,决定取决于您,但以下是一些常见选项:

  • 当存储的数据不再存在时,将其视为应用程序的全新启动.将用户带到登录页面并让他开始新游戏.
  • 坚持数据.根据您的存储情况,SharedPreferences或SQLite可能是不错的选择.有关存储选项的摘要,请参阅存储选项.

第二个选项显然不适用于您的Context,但我可能会为Context构建一个不同的解决方案.