Android: OnDestroy не вызывается, когда я закрываю приложение из кнопки " последние приложения
3 ответов
как указано в документации Android, это не гарантируется, что onDestroy() будет вызываться при выходе из приложения.
"есть ситуации, когда система просто убьет процесс хостинга активности без вызова этого метода"
https://developer.android.com/reference/android/app/Activity.html#onDestroy%28%29
вместо этого вы можете создать службу, которая будет уведомлена, когда задача ваша работы внутри разрушается.
создать класс обслуживания:
public class ClosingService extends Service {
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onTaskRemoved(Intent rootIntent) {
super.onTaskRemoved(rootIntent);
// Handle application closing
fireClosingNotification();
// Destroy the service
stopSelf();
}
}
объявите / зарегистрируйте свою службу в манифесте (в теге приложения, но вне любых тегов активности):
<service android:name=".services.ClosingService"
android:stopWithTask="false"/>
задание stopWithTask="false" вызывает onTaskRemoved() метод, который будет запущен в вашей службе, когда задача будет удалена из процесса.
здесь вы можете запустить логику закрытия приложения перед вызовом stopSelf() уничтожить Услуга.
вы должны прочитать некоторую информацию о жизненном цикле активности. Есть одна вещь, о методе onDestroy, он не звонил все время. Вы не должны полагаться на это.
укажите пожалуйста, что вы пытаетесь достичь, и я постараюсь предложить лучшее решение.
предложение
Service Это будет огоньLocalBroadcast каждые N секунд (это не очень тяжело для системы). Регистрация и BroadcastReceiver для этого трансляция в Activities. Таким образом, вы получите true или false в зависимости от того, есть ли BroadcastReceiver что может поймать ваш LocalBroadcast. И если нет приемников, чем проверить некоторые SharedPreferences значение, указывающее, если Button была нажата.ваша проблема в том, что onDestroy вызывается только вService. В Activity вызываемый метод onPause()
Проще говоря в вашей деятельности поле:
@Override
public void onPause()
{
//Put your Code here
}


