当应用程序在前台运行时,若 iOS 或 Android 设备通知内存不足,则会发生此事件。您可以从内存中释放非关键资源(例如,纹理或音频剪辑)以应对此情况,从而避免应用程序终止。您还可以加载此类资源的较小版本。此外,您应该将任何瞬态数据序列化为永久存储,以避免在应用程序终止时丢失数据。
此事件对应于不同平台上的以下回调:
- iOS:[UIApplicationDelegate applicationDidReceiveMemoryWarning]
- Android:onLowMemory() and onTrimMemory(level == TRIM_MEMORY_RUNNING_CRITICAL)
以下是处理回调的示例:
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(); } }