尝试在我的应用程序中实现ComponentCallbacks2。我没有从文档中得到明确答案的几件事
应用程序运行时,运行修剪级别是否会下降?例如,它可以从TRIM_MEMORY_RUNNING_CRITICAL
转到RUNNING_LOW
或RUNNING_MODERATE
。
现在我只在onCreate上获得lastTrimLevel。我是否应该在onResume上获得当前getMyMemoryState
,期望lastTrimLevel
更低?我问的原因是,如果我在获得TRIM_MEMORY_RUNNING_CRITICAL
后暂停应用,是否会出现这种情况。当我回来时,当前级别会更低RUNNING_LOW
或RUNNING_MODERATE
?
答案 0 :(得分:0)
有可能。考虑这种情况:有3个正在运行进程即。 A,B和C.过程C是贪婪的过程。一个人占据了大部分资源。假设系统遇到资源紧缩并向所有3个进程发出onTrimMemory()
级别TRIM_MEMORY_RUNNING_CRITICAL
。虽然A和B迅速释放资源,减少了他们的内存占用,但是贪婪的' C持有地面而不释放任何成为系统杀死的主要目标。
系统会杀死C并恢复其(巨大的缓存)资源。现在发布onTrimMemory()
时,传入的级别可能不如之前发布的TRIM_MEMORY_RUNNING_CRITICAL
严重。这里有几个变量,一个无法预测何时会出现什么级别。