В моем приложении я работаю с некоторыми огромными объектами в памяти, которые сохраняются, когда пользователи используют функцию «сохранить». Проблема в том, что когда пользователь оставляет приложение в фоновом режиме без сохранения, через некоторое время ОС удаляет эти огромные объекты из памяти для увеличения свободной оперативной памяти, поэтому, когда пользователь возвращается в приложение, эти объекты имеют значение null и он вылетает.
Существует ли способ узнать, когда ОС убивает части приложения, и заблокировать этот процесс уничтожения, чтобы сначала сохранить эти объекты? Если да, я смогу восстановить их, но я ничего не могу найти в документации android.
Я знаю, что существует метод с именем onLowMemory
, но это не решение, потому что:
Хотя точная точка, в которой это будет вызвано, не определена, обычно это происходит, когда все фоновые процессы были убиты.
http://developer.android.com/reference/android/app/Application.html#onLowMemory% 28% 29
РЕДАКТИРОВАТЬ: пример кода, чтобы узнать, что приложение переходит на передний и задний план:
public class CustomApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
// register observer for knowing when application goes to background and to foreground
ProcessLifecycleOwner.get().getLifecycle().addObserver(new LifecycleObserver(){
@OnLifecycleEvent(Lifecycle.Event.ON_START)
public void onAppStarted() {
Log.d("XXXX", "onAppStarted() called");
}
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
public void onAppStopped() {
Log.d("XXXX", "onAppStopped() called");
}
});
}
}