Unity 6.3
0 онлайн 67 гостей 3 в системе
Вход

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(); } }