IComponentCallbacks2 接口
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
具有新回调的扩展 ComponentCallbacks
接口,用于进行精细的内存管理。
[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
- 派生
- 属性
- 实现
注解
具有新回调的扩展 ComponentCallbacks
接口,用于进行精细的内存管理。 此接口可用于所有应用程序组件 (android.app.Activity
、 android.app.Service
、 ContentProvider
和 android.app.Application
) 。
应实现 #onTrimMemory
以基于当前系统约束以增量方式释放内存。 使用此回调释放资源有助于提供响应性更高的整体系统,但也直接有利于应用的用户体验,方法是允许系统使进程保持更长的运行时间。 也就是说,如果你<>不<>根据此回调定义的内存级别来修剪资源,则系统更有可能在进程缓存在最近使用最少的 (LRU) 列表中时终止该进程,从而要求应用在用户返回到它时重启并还原所有状态。
提供 #onTrimMemory
的值不表示内存限制的单一线性进展,但会提供有关内存可用性的不同类型的线索:
<ul><li>应用运行时:<ol><li#TRIM_MEMORY_RUNNING_MODERATE
><br>设备开始内存不足。 你的应用正在运行且不可终止。 <li>#TRIM_MEMORY_RUNNING_LOW
<br>设备的内存运行要低得多。 你的应用正在运行且不可终止,但请释放未使用的资源以提高系统性能 (这会直接影响应用的性能) 。 <li>#TRIM_MEMORY_RUNNING_CRITICAL
<br>设备的内存运行非常低。 你的应用尚未被视为可终止进程,但如果应用不释放资源,系统将开始终止后台进程,因此你应该立即释放非关键资源以防止性能下降。 </ol>/li><li>当应用的可见性发生更改时:<ol<>li>#TRIM_MEMORY_UI_HIDDEN
<br>你的应用的 UI 不再可见,因此这是释放仅供 UI 使用的大型资源的好时机。< </ol>/li><li>当应用的进程驻留在后台 LRU 列表中时:<ol<>li>#TRIM_MEMORY_BACKGROUND
<br>系统内存不足,并且进程接近 LRU 列表的开头。< 尽管应用进程没有被终止的高风险,但系统可能已在终止 LRU 列表中的进程,因此你应该释放易于恢复的资源,以便你的进程将保留在列表中,并在用户返回到你的应用时快速恢复。 <li>#TRIM_MEMORY_MODERATE
<br>系统内存不足,进程接近 LRU 列表的中间。 如果系统进一步受限于内存,则有可能终止进程。 <li>#TRIM_MEMORY_COMPLETE
<br>系统内存不足,如果系统现在不恢复内存,则你的进程是第一个被终止的进程之一。 你绝对应该释放所有对恢复应用状态不重要的内容。
若要支持低于 14 的 API 级别,可以使用 #onLowMemory
方法作为大致等效于 该 ComponentCallbacks2#TRIM_MEMORY_COMPLETE
级别的回退。 </li></ol><p class=“note”><strong>注意:</strong> 当系统开始终止 LRU 列表中的进程时,虽然它主要从下到上工作,但它确实会考虑哪些进程消耗更多内存,因此在终止后会提供更多的内存收益。 因此,在 LRU 列表中消耗的内存越少,你就越有可能保留在列表中并能够快速恢复。
</li></ul>
进程 和线程 文档中提供了有关进程生命周期 (的不同阶段的详细信息,例如放置在后台 LRU 列表) 的含义。
的 android.content.ComponentCallbacks2
Java 文档。
此页面的某些部分是基于 创建和共享的工作进行的修改,并根据 署名许可中所述的条款使用。
属性
Handle |
获取基础 Android 对象的 JNI 值。 (继承自 IJavaObject) |
JniIdentityHashCode |
返回包装实例的 的值 |
JniManagedPeerState |
托管对等方的状态。 (继承自 IJavaPeerable) |
JniPeerMembers |
成员访问和调用支持。 (继承自 IJavaPeerable) |
PeerReference |
返回 JniObjectReference 包装的 Java 对象实例的 。 (继承自 IJavaPeerable) |
方法
Disposed() |
在释放实例时调用。 (继承自 IJavaPeerable) |
DisposeUnlessReferenced() |
如果没有对此实例的未完成引用,则调用 |
Finalized() |
在实例完成时调用。 (继承自 IJavaPeerable) |
OnConfigurationChanged(Configuration) |
在组件运行时设备配置发生更改时由系统调用。 (继承自 IComponentCallbacks) |
OnLowMemory() |
当整个系统的内存不足,并且主动运行的进程应削减其内存使用量时,将调用此方法。 (继承自 IComponentCallbacks) |
OnTrimMemory(TrimMemory) |
当操作系统确定现在是进程从进程中剪裁不需要的内存的好时机时调用。 |
SetJniIdentityHashCode(Int32) |
设置 返回 |
SetJniManagedPeerState(JniManagedPeerStates) |
具有新回调的扩展 |
SetPeerReference(JniObjectReference) |
设置 返回 |
UnregisterFromRuntime() |
取消注册此实例,以便运行时不会从将来 Java.Interop.JniRuntime+JniValueManager.PeekValue 的调用中返回它。 (继承自 IJavaPeerable) |
扩展方法
JavaCast<TResult>(IJavaObject) |
执行 Android 运行时检查的类型转换。 |
JavaCast<TResult>(IJavaObject) |
具有新回调的扩展 |
GetJniTypeName(IJavaPeerable) |
具有新回调的扩展 |