语言

IComponentCallbacks2 接口

定义

可用于改进后台内存管理的应用状态转换的回调。

[Android.Runtime.Register("android/content/ComponentCallbacks2", "", "Android.Content.IComponentCallbacks2Invoker")]
public interface IComponentCallbacks2 : Android.Content.IComponentCallbacks, IDisposable, Java.Interop.IJavaPeerable
[<Android.Runtime.Register("android/content/ComponentCallbacks2", "", "Android.Content.IComponentCallbacks2Invoker")>]
type IComponentCallbacks2 = interface
    interface IComponentCallbacks
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
派生
属性
实现

注解

可用于改进后台内存管理的应用状态转换的回调。 此接口在所有应用程序组件(android.app.Activityandroid.app.ServiceContentProviderandroid.app.Application)中都可用。

应用进入后台状态时,应实现 #onTrimMemory 释放内存。 这样做有助于系统将应用的进程缓存在内存中更长的时间,以便用户下次将应用引入前台时,应用将执行 暖启动或热启动,恢复速度更快并保留状态。

<h2>剪裁内存级别以及如何处理内存<级别/h2>

<ul><li>#TRIM_MEMORY_UI_HIDDEN<br> 你的应用的 UI 不再可见。 这是释放仅 UI 使用的大型内存分配的好时机,例如 android.graphics.Bitmap Bitmaps,与视频播放或动画相关的资源。 <li>#TRIM_MEMORY_BACKGROUND<br> 你的应用的进程被视为处于后台,并且已有资格被终止,以便释放其他进程的内存。 释放更多内存将延长进程可以保留在内存中的时间。 有效的策略是在用户返回到应用时释放可重新生成的资源。 </ul>

当用户不可见时,继续为用户执行工作的应用可以通过更改其行为来响应 #TRIM_MEMORY_UI_HIDDEN 回调,以偏向较低的内存使用率。 例如,音乐播放器可能会保留当前播放播放列表中所有曲目的完整尺寸专辑艺术,因为位图缓存在内存中。 当应用处于后台但音乐播放继续时,应用可以更改缓存行为,以缓存内存中的位图更少或更小。

剪裁级别的序号值表示一系列不断升级的内存压力事件,并相应地递增值。 将来可能会添加更多状态。 因此,请务必不检查特定值,而是检查传递给 #onTrimMemory 的级别是否大于或等于应用程序处理级别。 例如:

{@code
            public void onTrimMemory(int level) {
                if (level >= TRIM_MEMORY_BACKGROUND) {
                    // Release any resources that can be rebuilt
                    // quickly when the app returns to the foreground
                    releaseResources();
                } else if (level >= TRIM_MEMORY_UI_HIDDEN) {
                    // Release UI-related resources
                    releaseUiResources();
                }
            }
            }

<strong Note:</strong>> the runtime may invoke Garbage Collection (GC),以响应应用程序状态更改。 无需从应用显式调用 GC。

Java文档android.content.ComponentCallbacks2

本页的某些部分是根据 创建和共享的工作进行的修改,并根据 许可证中所述的条款使用。

属性

名称 说明
Handle

获取基础 Android 对象的 JNI 值。

(继承自 IJavaObject)
JniIdentityHashCode

返回包装实例的值 java.lang.System.identityHashCode()

(继承自 IJavaPeerable)
JniManagedPeerState

托管对等方的状态。

(继承自 IJavaPeerable)
JniObjectReferenceControlBlock

可用于改进后台内存管理的应用状态转换的回调。

(继承自 IJavaPeerable)
JniPeerMembers

成员访问和调用支持。

(继承自 IJavaPeerable)
PeerReference

返回JniObjectReference包装的Java对象实例。

(继承自 IJavaPeerable)

方法

名称 说明
Disposed()

在释放实例时调用。

(继承自 IJavaPeerable)
DisposeUnlessReferenced()

如果没有对此实例的未完成引用,则调用 Dispose();否则不执行任何操作。

(继承自 IJavaPeerable)
Finalized()

在实例完成时调用。

(继承自 IJavaPeerable)
OnConfigurationChanged(Configuration)

当设备配置在组件运行时发生更改时由系统调用。

(继承自 IComponentCallbacks)
OnLowMemory()

当整个系统内存不足时,会调用此方法,并且主动运行的进程应剪裁其内存使用率。

(继承自 IComponentCallbacks)
OnTrimMemory(TrimMemory)

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

SetJniIdentityHashCode(Int32)

设置由 JniIdentityHashCode. 返回的值。

(继承自 IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

可用于改进后台内存管理的应用状态转换的回调。

(继承自 IJavaPeerable)
SetPeerReference(JniObjectReference)

设置由 PeerReference. 返回的值。

(继承自 IJavaPeerable)
UnregisterFromRuntime()

取消注册此实例,使运行时不会从将来 Java.Interop.JniRuntime+JniValueManager.PeekValue 的调用中返回它。

(继承自 IJavaPeerable)

扩展方法

名称 说明
GetJniTypeName(IJavaPeerable)

获取实例 self类型的 JNI 名称。

JavaAs<TResult>(IJavaPeerable)

尝试强制self键入TResult,检查强制是否在Java端有效。

JavaCast<TResult>(IJavaObject)

执行 Android 运行时检查的类型转换。

JavaCast<TResult>(IJavaObject)

可用于改进后台内存管理的应用状态转换的回调。

TryJavaCast<TResult>(IJavaPeerable, TResult)

尝试强制self键入TResult,检查强制是否在Java端有效。

适用于