Most visited

Recently visited

Added in API level 14

ComponentCallbacks2

public interface ComponentCallbacks2
implements ComponentCallbacks

android.content.ComponentCallbacks2
Known Indirect Subclasses


扩展ComponentCallbacks接口,使用新的回调进行更细粒度的内存管理。 这个接口是所有应用程序组件(可ActivityServiceContentProvider ,并Application )。

您应该实现onTrimMemory(int)以基于当前系统约束增量释放内存。 使用此回调释放资源有助于提供更全面的响应式系统,但也可让系统保持您的流程长久存活,从而直接为您的应用提供用户体验。 也就是说,如果您没有根据此回调定义的内存级别来裁减资源,那么当系统缓存在最近最少使用(LRU)列表中时,系统更可能会终止进程,因此需要重新启动应用程序并在用户返回时恢复所有状态。

onTrimMemory(int)提供的值不代表内存限制的单个线性级数,而是为您提供有关内存可用性的不同类型的线索:

有关流程生命周期不同阶段的更多信息(例如,它意味着放置在后台LRU列表中)在 Processes and Threads文档中提供。

Summary

Constants

int TRIM_MEMORY_BACKGROUND

级别为 onTrimMemory(int) :进程已经进入LRU列表。

int TRIM_MEMORY_COMPLETE

级别为 onTrimMemory(int) :进程已接近后台LRU列表的末尾,并且如果更多内存很快没有找到,它将被终止。

int TRIM_MEMORY_MODERATE

级别为onTrimMemory(int) :进程位于后台LRU列表的中间; 释放内存可以帮助系统保留列表中稍后运行的其他进程,以获得更好的整体性能。

int TRIM_MEMORY_RUNNING_CRITICAL

级别为 onTrimMemory(int) :该进程不是一个 onTrimMemory(int)后台进程,但设备运行内存极低,并且将不能保持任何后台进程的运行。

int TRIM_MEMORY_RUNNING_LOW

级别为 onTrimMemory(int) :该过程不是一个 onTrimMemory(int)后台进程,但设备内存不足。

int TRIM_MEMORY_RUNNING_MODERATE

onTrimMemory(int)等级:该过程不是一个可消耗的后台进程,但该设备在内存上运行适度低。

int TRIM_MEMORY_UI_HIDDEN

级别为 onTrimMemory(int) :该过程已显示用户界面,并且不再这样做。

Public methods

abstract void onTrimMemory(int level)

当操作系统确定进程从其进程中删除不需要的内存是一个好时机时调用。

Inherited methods

From interface android.content.ComponentCallbacks

Constants

TRIM_MEMORY_BACKGROUND

Added in API level 14
int TRIM_MEMORY_BACKGROUND

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

常量值:40(0x00000028)

TRIM_MEMORY_COMPLETE

Added in API level 14
int TRIM_MEMORY_COMPLETE

级别为 onTrimMemory(int) :进程接近后台LRU列表的末尾,并且如果没有找到更多内存,它将被终止。

常数值:80(0x00000050)

TRIM_MEMORY_MODERATE

Added in API level 14
int TRIM_MEMORY_MODERATE

级别为onTrimMemory(int) :进程位于后台LRU列表的中间; 释放内存可以帮助系统保留列表中稍后运行的其他进程,以获得更好的整体性能。

常量值:60(0x0000003c)

TRIM_MEMORY_RUNNING_CRITICAL

Added in API level 16
int TRIM_MEMORY_RUNNING_CRITICAL

级别为onTrimMemory(int) :该进程不是一个onTrimMemory(int)后台进程,但该设备运行内存非常低,并且将不能保持任何后台进程运行。 正在运行的进程应释放尽可能多的非关键资源,因为它可以允许在其他地方使用该内存。 在此之后发生的下一件事情是调用onLowMemory()报告没有任何东西可以保留在后台,这种情况可能开始对用户产生显着影响。

常量值:15(0x0000000f)

TRIM_MEMORY_RUNNING_LOW

Added in API level 16
int TRIM_MEMORY_RUNNING_LOW

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

常量值:10(0x0000000a)

TRIM_MEMORY_RUNNING_MODERATE

Added in API level 16
int TRIM_MEMORY_RUNNING_MODERATE

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

常量值:5(0x00000005)

TRIM_MEMORY_UI_HIDDEN

Added in API level 14
int TRIM_MEMORY_UI_HIDDEN

级别为onTrimMemory(int) :该进程已显示用户界面,并且不再这样做。 此时应该释放大量的用户界面分配,以便更好地管理内存。

常量值:20(0x00000014)

Public methods

onTrimMemory

Added in API level 14
void onTrimMemory (int level)

当操作系统确定进程从其进程中删除不需要的内存是一个好时机时调用。 例如,当它进入后台并且没有足够的内存来保持尽可能多的后台进程运行时,会发生这种情况。 您不应该与级别的确切值进行比较,因为可能会添加新的中间值 - 如果值大于或等于您感兴趣的级别,通常需要比较。

要在任何点检索处理当前的修剪水平,可以使用 ActivityManager.getMyMemoryState(RunningAppProcessInfo)

Parameters
level int: The context of the trim, giving a hint of the amount of trimming the application may like to perform. May be TRIM_MEMORY_COMPLETE, TRIM_MEMORY_MODERATE, TRIM_MEMORY_BACKGROUND, TRIM_MEMORY_UI_HIDDEN, TRIM_MEMORY_RUNNING_CRITICAL, TRIM_MEMORY_RUNNING_LOW, or TRIM_MEMORY_RUNNING_MODERATE.

Hooray!