Когда нужно обнаружить завершение работы приложения?

У меня есть приложение, которое автоматически передает данные о местоположении на серверы в фоновом режиме (да, это необходимо), но нужно делать это, пока действие уничтожается для сохранения памяти (то есть onDestroy() не будет работать), но я хочу, чтобы мое приложение Прекратите эти операции, когда «отскакивает» в представлении запущенных приложений.

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

EDIT: Я узнал об услугах самостоятельно, но я собираюсь присудить награду человеку с наиболее полным примером их использования. (Мне это не нужно, но я думаю, что текущие ответы не достойны щедрости.)

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

У меня такое чувство, что ты делаешь что-то не так. Почему отправляется местоположение удаленному партнеру в сочетании с жизненным циклом активности? Я не вижу смысла в этом. Если вы хотите отправить местоположение только тогда, когда находитесь на переднем плане, вы можете использовать ActivityLifecycleCallbacks, чтобы вы могли получать уведомления, когда вы перешли на передний план или фон, и остановите отдельного отправителя, когда вы заходите на задний план или возобновляете, когда ваша деятельность становится самой первой.

Что касается недавнего вопроса, связанного со списком, позвольте мне вставить этот комментарий Dianne Hackborn:

Что конкретно происходит, когда вы удаляете недавнюю задачу: (1) убивает любые фоновые или пустые процессы приложения (см. http://developer.android.com/guide/topics/fundamentals/processes-and-threads.html #Lifecycle для чего это означает), и (2) использует новый API http://developer.android.com/reference/android/app/Service.html#onTaskRemoved(android.content.Intent), чтобы сообщить какие-либо службы Приложение о удаленной задаче, чтобы оно могло делать все, что, по его мнению, является подходящим.

Вы можете найти этот пост здесь: https://plus.google.com/105051985738280261832/posts/GfwRYCC42uX (мне не удалось найти ссылку на комментарий к google plus thing).

Создайте класс, расширяющий класс Service . Вам необходимо зарегистрировать класс в вашем manifest (Тонны рабочих примеров в Интернете). Затем вам нужно решить, как должна работать Связь между вашим Service и вашей Activity . Вы можете использовать один из следующих способов:

  1. Использование Messenger ( пример )
  2. Используя Intent s и зарегистрировав BroadcastReceiver ( Пример )
  3. Использование AIDL (Лучше не пытаться использовать это из-за его высокой сложности)

Я думаю, вам придется самим искать примеры. Филипп Хеккель создал несколько классов, расширяющих первоначальный класс Service и осуществляющий связь «Служба-активность». ServiceManager.java & AbstractService.java можно использовать для создания такой службы, в которой вы нуждаетесь. Кроме того, реализация довольно проста. ( Полный пример )

Создайте свою собственную Activity , BaseActivity и BaseActivity к Activity , переопределите метод onDestroy() и onDestroy() способ, onDestroy() свой код.

Итак, ваши другие действия расширяют вашу базовую Activity и переопределяют метод onDestroy() и вызывают súper.onDestroy() чтобы применить родительские действия.

Если бы я был вами, я бы сделал это так. Разумеется, может быть и другой лучший способ, но это solución- (решение).

Почему бы не использовать функцию намерения для передачи данных местоположения? Он продолжит работу (= передача), если приложение будет убито.

Если вы хотите отправить данные только тогда, когда приложение отключилось, вы можете запустить метод intentService при помощи метода onStop () (как указано в другом ответе, продлить действие, чтобы избежать переопределения всех onStop один за другим).

Intereting Posts
Установите через OTA приложение начнет с всплеска при сведении к минимуму и повторном входе Как отправить данные multipart / form на веб-сервер из Android? Строка состояния Gradient на Android Lollipop Android: текстовое изображение с вертикальным текстом прокрутки Android: как добавить фигуру треугольника в правом верхнем углу кнопки Звук уведомления не воспроизводится, когда экран устройства заблокирован Должен ли я использовать «_activity = this?»? Android не поддерживает Android SDK для Kivy в Ubuntu 12.04 Как медленно или быстро работает Qt для Android Достижение модальной функции просмотра в Android Раскручивание прядильщика с вершины прядильщика Приложение падает при воспроизведении видеоролика в веб-просмотре? Ответные обратные ответы Okhttp на основной поток Используйте Android для обнаружения других устройств, работающих поблизости. Java.lang.IllegalArgumentException: текущий должен быть> = start и <= end