Как действовать каждый раз, когда пользователь запускает / останавливает приложение, независимо от активности, на которой он находится - PullRequest
0 голосов
/ 11 апреля 2011

Я в процессе портирования приложения, изначально разработанного на iOS, на Android.Я пытаюсь выполнить следующее:

  • каждый раз, когда приложение запускается, вызывать метод start () в классе Manager
  • каждый раз, когда пользователь покидает приложение, вызыватьметод stop () в том же классе Manager
  • каждый раз, когда пользователь возвращается в приложение (возобновляя работу из бездействия), вызывает метод start () в классе Manager

Так называемые рукопожатия класса Manager с сервером в Интернете, и каждый раз, когда пользователь входит в приложение и покидает приложение, ему необходимо выполнять различные действия по ведению бухгалтерского учета.

Принимая во внимание, что iOS позволяет создавать подкласс UIAppDelegateКласс и код, который запускается, когда приложение запускается, заканчивается или возобновляет работу из простоя, кажется, что Android не имеет эквивалентного подхода.Вместо этого это параметры для Android:

1) Класс Activity: методы для каждого создания, остановки или возобновления Activity (представления)
2) Класс приложения: onStart и onDestroy для каждого разаприложение запущено или убито
3) Сервисный механизм для создания фоновой задачи, которую можно использовать для выполнения долгоживущих операций в фоновом режиме, когда приложение активно или даже когда оно не активно

Ни один извышесказанное очень хорошо согласуется с тем, к чему я привык в iOS.Вариант 1 требует, чтобы каждое действие в иерархии представления приложения имело код, который запускается при запуске / остановке / возобновлении приложения.Из 3, я чувствую, вариант 3 более актуален.Мне просто не совсем понятно, как я могу запускать / останавливать службу в Android, когда пользователь запускает / останавливает / возобновляет приложение без учета конкретной активности, в которой он находится в данный момент.

Буду признателенВклад разработчиков Android или разработчиков, работающих на iOS и Android.

Ответы [ 2 ]

1 голос
/ 11 апреля 2011

Если вы хотите избежать дублирования кода во всех ваших действиях, почему бы не иметь 1 подкласс деятельности с общим кодом и иметь другой подкласс действий, который?

Вы можете отслеживать время жизни действий, используя различныемеханизмы, в том числе установка / очистка SharedPreferences в onPause / onResume или использование синглтона с подсчетом ссылок.

Надеюсь, это поможет,

Фил Лелло

1 голос
/ 11 апреля 2011

Так называемые рукопожатия класса Manager с сервером в Интернете, и каждый раз, когда пользователь входит в приложение и покидает приложение, ему необходимо выполнять различные действия по ведению бухгалтерского учета.

Это может быть допустимый шаблон дизайна на iOS - я понятия не имею.Это недопустимый шаблон дизайна на Android.Вы не «выходите из приложения» на Android больше, чем «выходите из приложения» в веб-приложении.«Выход» определяется в основном как «вы не возвращались» в приложениях для Android и веб-приложениях.

2) Класс приложения: onStart и onDestroy для каждого запуска приложения илиkill

Обратите внимание, что метод onTerminate(), а не onDestroy(), и он на самом деле никогда не вызывается.Объект Application создается, когда процесс находится и живет до тех пор, пока процесс не будет завершен сразу.

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

Вы можете использовать службу для выполнения "рукопожатия" - на самом деле это, вероятно, вероятно.

Однако для «выхода из приложения» нет ничего встроенного.Я настоятельно рекомендую вам просто полностью избавиться от этой концепции.

Если нет, вы можете настроить службу, которая уведомляется о каждом onPause() и onResume(), делает ли бухгалтерия, чтобы увидетьесли есть какие-либо живые действия, и если не было в течение X промежутка времени, ваша логика «покидать приложение», затем отключается.Вы также можете активировать логику «оставить приложение» в onDestroy(), если служба закрывается по запросу ОС по сравнению с вашим собственным запросом выключения.Это не на 100% гарантированно работает - пользователи могут принудительно остановить вашу службу, а ОС может безнаказанно завершить процесс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...