Application.lowMemory
Описание
Событие Application._lowMemory происходит, когда приложение получает уведомление о нехватке памяти от устройства, на котором оно запущено.
Это происходит только тогда, когда ваше приложение работает на переднем плане. Вы можете освободить некритические ассеты из памяти (такие как текстуры и аудиоклипы), чтобы избежать прекращения работы приложения. Вы также можете загрузить меньшие версии таких ассетов. Кроме того, следует сериализовать любые временные данные в постоянное хранилище, чтобы избежать потери данных при прекращении работы приложения.
Событие Application._lowMemory поддерживается на iOS, Android и универсальной платформе Windows (UWP), и оно соответствует следующим обратным вызовам на различных платформах:
- iOS:
UIApplicationDelegate applicationDidReceiveMemoryWarning - Android:
onLowMemory() иonTrimMemory(level == TRIM_MEMORY_RUNNING_CRITICAL) - UWP:
MemoryManager.AppMemoryUsageIncreased (AppMemoryUsageLevel == OverLimit)
Примечание: Для UWP это событие не происходит на рабочем столе и работает только на устройствах с ограниченной памятью, таких как HoloLens и Xbox One. Порог OverLimit, указанный OS в этом случае, настолько высок, что его достижение и запуск события не представляется возможным.
В следующем примере показан пример обработки обратного вызова:
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(); } }