2015-09-02 3 views
-1

Мне нужно установить booleanisOnline в false и обновить его в удаленной базе данных, если приложение закрыто или убито.Обновить значение в удаленной базе данных, если приложение было убито или закрыто, когда в фоновом режиме

Есть ли способ определить, может ли мой пользователь это сделать?

Я не хочу этого делать в onStop(). И onDestroy(), похоже, не вызван, если мой пользователь убивает процесс приложения через Android.

С уважением,

+0

http://developer.android.com/reference/android/app/Activity .html # onStop() –

ответ

0

Хммм можно спросить, почему вы не хотите, чтобы сделать это в onStop?

В любом случае, onStop может не всегда вызываться в ситуациях с низкой памятью, а также onDestroy, например, когда Android голодает за ресурсы и не может должным образом обработать действие.

Итак, - последний способ, которым вы гарантированно будете называться. А может быть, вы можете использовать его в сочетании с isFinishing(), как объяснено в http://developer.android.com/reference/android/app/Activity.html#isFinishing%28%29

public boolean isFinishing()

Проверьте, есть ли эта деятельность находится в процессе отделки, либо потому, что вы назвали финиш() на нем или кто-то еще запросил , что он закончил. Это часто используется в onPause() для определения того, является ли операция просто приостановлена ​​или полностью завершена.

Другой метод, который может быть ваш интерес, если вы изучаете альтернативы:

public void onWindowFocusChanged (boolean hasFocus) 

Вызывается, когда текущее окно усилений деятельности или теряет фокус. Это лучший показатель того, является ли это действие видимым для пользователя. Реализация по умолчанию очищает состояние отслеживания ключей, поэтому всегда следует вызывать.

(собираюсь фон не должен означать, что пользователь закрыл приложение, но вы будете знать, если это может быть полезным для вас)

+0

Спасибо за этот ответ, isFinishing полезен. Но это действительно не решает мою проблему. Я хочу установить логическое значение false, если мой пользователь убьет приложение из ОС, когда приложение уже было уменьшено (помещено в фоновом режиме). И я думаю, что в этом случае вызывается только onDestroy ... – Heretyk

0

Ну, тогда я могу только думать, вы должны начать службу в стороне (в собственном процессе), чтобы проверить, не убито ли ваше приложение, прочитав список процессов приложений, запущенных на устройстве, с помощью getRunningAppProcesses() См. http://developer.android.com/reference/android/app/ActivityManager.html#getRunningAppProcesses()