当您的应用程序从其运行的设备收到低内存通知时,将发生Application._lowMemory
事件。
这仅在您的应用程序处于前台运行时发生。您可以从内存中释放非关键资源(例如纹理和音频剪辑),以避免应用程序被终止。您还可以加载这些资源的较小版本。此外,您应该将任何临时数据序列化到永久存储中,以避免在应用程序终止时发生数据丢失。
iOS、Android 和通用 Windows 平台 (UWP) 上支持Application._lowMemory
事件,它对应于不同平台上的以下回调
UIApplicationDelegate applicationDidReceiveMemoryWarning
onLowMemory(
) 和 onTrimMemory(level == TRIM_MEMORY_RUNNING_CRITICAL)
MemoryManager.AppMemoryUsageIncreased (AppMemoryUsageLevel == OverLimit)
注意:对于 UWP,此事件不会在桌面设备上发生,仅在内存受限设备(如 HoloLens 和 Xbox One)上有效。在这种情况下,操作系统指定的 OverLimit 阈值非常高,以至于无法合理地达到并触发该事件。
以下示例演示了处理回调的示例
using UnityEngine; using System.Collections; using System.Collections.Generic;
class LowMemoryTrigger : MonoBehaviour { List<Texture2D> _textures;
private void Start() { _textures = new List<Texture2D>(); Application.lowMemory += OnLowMemory; }
private void Update() { // allocate textures until we run out of memory _textures.Add(new Texture2D(256, 256)); }
private void OnLowMemory() { // release all cached textures _textures = new List<Texture2D>(); Resources.UnloadUnusedAssets(); } }