ComponentCallbacks2修剪级别更改

时间:2015-10-29 16:04:45

标签: android performance

尝试在我的应用程序中实现ComponentCallbacks2。我没有从文档中得到明确答案的几件事

  1. 应用程序运行时,运行修剪级别是否会下降?例如,它可以从TRIM_MEMORY_RUNNING_CRITICAL转到RUNNING_LOWRUNNING_MODERATE

  2. 现在我只在onCreate上获得lastTrimLevel。我是否应该在onResume上获得当前getMyMemoryState,期望lastTrimLevel更低?我问的原因是,如果我在获得TRIM_MEMORY_RUNNING_CRITICAL后暂停应用,是否会出现这种情况。当我回来时,当前级别会更低RUNNING_LOWRUNNING_MODERATE

1 个答案:

答案 0 :(得分:0)

有可能。考虑这种情况:有3个正在运行进程即。 A,B和C.过程C是贪婪的过程。一个人占据了大部分资源。假设系统遇到资源紧缩并向所有3个进程发出onTrimMemory()级别TRIM_MEMORY_RUNNING_CRITICAL。虽然A和B迅速释放资源,减少了他们的内存占用,但是贪婪的' C持有地面而不释放任何成为系统杀死的主要目标。

系统会杀死C并恢复其(巨大的缓存)资源。现在发布onTrimMemory()时,传入的级别可能不如之前发布的TRIM_MEMORY_RUNNING_CRITICAL严重。这里有几个变量,一个无法预测何时会出现什么级别。