我有一个具有大量实例属性的自定义Application类,并且活动依赖于此属性。有时当活动在后台并且我打开应用程序时,会发生一些空指针异常。我知道这个问题的原因是Android正在杀死应用程序。当我打开应用程序时,会再次创建当前活动,但现在Application属性为null。
我有两种方法可以解决这个问题。当级别为TRIM_MEMORY_MODERATE或更高级别时,两种解决方案都需要onTrimMemory方法来清除应用程序缓存。
1º - 清除缓存并打开应用程序后,如果所需的Application属性为null,则当前活动结束。只有主活动才会再次加载Application属性。这需要较少的工作,因为最重构将发生在主要活动中。
2º - 每次Application属性为null时,重构所有活动以从后端加载所有必需的数据。在这里,我有很多工作,因为所有活动必须是独立的,必须知道如何加载自己的数据。
处理此Android行为的最佳方法是什么?你怎么解决这个问题?当从自定义Application类中清除缓存数据时,我需要做些什么来阻止这个空指针?
答案 0 :(得分:0)
我对您的数据存储库架构了解不多,但您应遵循以下规则:
除了上述3以外,我还建议您使用TRIM_MEMORY_UI_HIDDEN,这意味着您不再可以看到Activity,并且您可以在活动中缓存大型UI相关资源,尤其是Bitmaps :)。