到顶部
Android API
公众的接口

组件回调2

实施组件回调
android内容。组件回调2
已知间接子类

课程概述

扩展组件回调与的新回调接口细粒度内存管理。此接口在所有应用程序组件中都可用(活动,服务,内容提供者、和应用程序)。

你应该实施onTrimMemory(int)根据当前数据增量释放内存系统约束。使用此回调释放资源有助于提供更多整体响应系统,但也直接有利于用户体验您的应用程序,让系统让您的进程保持更长时间。那就是,如果你不要根据此回调定义的内存级别调整资源,当您的进程被缓存在最近使用过的缓存中时,系统更有可能终止该进程(LRU)列表,因此要求您的应用程序在用户返回时重新启动并恢复所有状态。

由提供的值onTrimMemory(int)不代表内存限制,但提供不同类型的内存可用性线索:

  • 应用程序运行时:
    1. TRIM_MEMORY_RUNNING_MODERATE(微调_记忆_运行_模式)
      设备内存开始不足。你的应用程序正在运行,无法终止。
    2. TRIM_MEMORY_RUNNING_LOW(TRIM_MEMORY_RUNNING_LOW)
      该设备的内存运行速度要低得多。您的应用程序正在运行且无法终止,但请释放未使用的资源以改进系统性能(直接影响应用程序的性能)。
    3. TRIM_MEMORY_RUNNING_CRITICAL(修剪_记忆_运行_关键)
      该设备内存不足。您的应用程序尚未被视为可终止进程,但系统将开始终止后台进程如果应用程序不释放资源,则应释放非关键资源以防止性能下降。
  • 当应用程序的可见性发生变化时:
    1. TRIM_MEMORY_UI_HIDDEN按钮
      你的应用程序的UI不再可见,因此这是一个很好的是时候释放仅由UI使用的大型资源了。
  • 当应用程序的进程位于后台LRU列表中时:
    1. TRIM_MEMORY_背景
      系统内存不足,您的进程靠近LRU列表的开头。尽管您的应用程序进程不存在高风险killed,则系统可能已经在终止LRU列表中的进程,因此您应该释放易于恢复的资源,因此您的流程将保留在列表中并继续当用户返回到您的应用程序时,请快速执行。
    2. TRIM_MEMORY_MODERATE(微调_记忆_模式)
      系统内存不足,您的进程靠近LRU列表的中间。如果系统内存进一步受限你的进程可能会被终止。
    3. TRIM_MEMORY_完成
      系统内存不足,您的进程如果系统现在不恢复内存,第一批被杀死的人之一。你应该释放绝对是所有对恢复应用程序状态不重要的东西。

      要支持低于14的API级别,可以使用低内存()方法作为大致相当于TRIM_MEMORY_完成水平。

    注:系统启动时LRU列表中的killing进程,虽然它主要是自下而上工作的,但它确实提供了一些考虑哪些进程消耗更多内存,从而在记忆如果被杀死。因此,在LRU列表中使用的内存越少越好你有机会留在名单上,并能迅速恢复。

有关流程生命周期不同阶段的更多信息(例如它的含义放置在背景LRU列表中)进程和线程文档。

总结

常量
整数 TRIM_MEMORY_背景 的级别onTrimMemory(int):该过程已进入LRU列表。
整数 TRIM_MEMORY_完成 的级别onTrimMemory(int):过程即将结束背景LRU列表,如果没有很快找到更多内存,它将被杀。
整数 TRIM_MEMORY_MODERATE(微调_记忆_模式) 的级别onTrimMemory(int):过程在中间背景LRU列表;释放内存可以帮助系统保持列表中稍后运行的其他进程,以获得更好的总体性能。
整数 TRIM_MEMORY_RUNNING_CRITICAL(修剪_记忆_运行_关键) 的级别onTrimMemory(int):该过程不是消耗性的后台进程,但设备内存运行得非常低并且将无法保持任何后台进程运行。
整数 TRIM_MEMORY_RUNNING_LOW(TRIM_MEMORY_RUNNING_LOW) 的级别onTrimMemory(int):该过程不是消耗性的后台进程,但设备内存不足。
整数 TRIM_MEMORY_RUNNING_MODERATE(微调_记忆_运行_模式) 的级别onTrimMemory(int):该过程不是消耗性的后台进程,但设备运行内存不足。
整数 TRIM_MEMORY_UI_HIDDEN按钮 的级别onTrimMemory(int):过程一直在显示用户界面,并且不再这样做。
公共方法
摘要空隙 onTrimMemory(调整内存)(int级)
当操作系统确定它是好的时调用进程从其进程中删除不需要的内存的时间。
[展开]
继承的方法
来自接口android内容。组件回调

常量

公众静态的最终整数TRIM_MEMORY_背景

已在中添加API级别14

的级别onTrimMemory(int):该过程已进入LRU列表。这是一个清理资源的好机会如果用户返回应用程序,则可以快速高效地重新构建。

常量值: 40(0x00000028)

公众静态的最终整数TRIM_MEMORY_完成

已在中添加API级别14

的级别onTrimMemory(int):过程即将结束背景LRU列表,如果没有很快找到更多内存,它将被杀。

常量值: 80(0x00000050)

公众静态的最终整数TRIM_MEMORY_MODERATE(微调_记忆_模式)

已在中添加API级别14

的级别onTrimMemory(int):过程在中间背景LRU列表;释放内存可以帮助系统保持列表中稍后运行的其他进程,以获得更好的总体性能。

常量值: 60(0x0000003c)

公众静态的最终整数TRIM_MEMORY_RUNNING_CRITICAL(修剪_记忆_运行_关键)

已在中添加API级别16

的级别onTrimMemory(int):该过程不是消耗性的后台进程,但设备内存运行得非常低并且将无法保持任何后台进程运行。您正在运行的进程应释放尽可能多的非关键资源可以允许该内存在其他地方使用。下一件事是将在这之后发生低内存()打电话报告任何事情都不能隐藏在幕后,一个可以开始的局面以显著影响用户。

常量值: 15(0x0000000f)

公众静态的最终整数TRIM_MEMORY_RUNNING_LOW(TRIM_MEMORY_RUNNING_LOW)

已在中添加API级别16

的级别onTrimMemory(int):该过程不是消耗性的后台进程,但设备内存不足。您正在运行的进程应释放不需要的资源以允许用于其他地方的内存。

常量值: 10(0x0000000a)

公众静态的最终整数TRIM_MEMORY_RUNNING_MODERATE(微调_记忆_运行_模式)

已在中添加API级别16

的级别onTrimMemory(int):该过程不是消耗性的后台进程,但设备运行内存不足。您正在运行的进程可能希望为释放一些不需要的资源在其他地方使用。

常量值: 5(0x00000005)

公众静态的最终整数TRIM_MEMORY_UI_HIDDEN按钮

已在中添加API级别14

的级别onTrimMemory(int):过程一直在显示用户界面,并且不再这样做此时应释放UI,以使内存更好管理。

常量值: 20(0x00000014)

公共方法

公众摘要空隙 onTrimMemory(调整内存) (int级)

已在中添加API级别14

当操作系统确定它是好的时调用进程从其进程中删除不需要的内存的时间。这将例如,当它出现在后台,但数量不足时内存以使尽可能多的后台进程运行。不得与液位的精确值进行比较,因为新的中间物可以添加值--您通常需要比较大于或等于您感兴趣的级别。

要在任何时候检索进程的当前微调级别,您可以使用ActivityManager.getMyMemoryState(RunningAppProcessInfo)