2014-01-29 4 views
0

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

Is есть простой способ сделать это в Android? Я добавил onResume() и onPause() в свои действия, но это будет срабатывать, когда действие возобновится или приостанавливается, а не когда приложение в целом приостанавливается (и приводит к большой синхронизации при каждом выполнении пользователем).

Обновление: Операция Sync - это Служба, которая вызывается, когда приложение должно получать новую/обновленную информацию с сервера. Таким образом, это необходимо сделать, когда приложение будет запущено/возобновлено suer (после неактивности в течение некоторого времени), и это необходимо сделать, когда пользователь активно прекращает использование приложения.

+2

IMHO, вы не задаете правильного вопроса. Вы должны объяснить, что такое ваш «синхронный» процесс, а затем спросить, какими должны быть правильные сроки для таких операций. – CommonsWare

+0

Я просто хочу второй CommonsWare по этому поводу - что вы подразумеваете под Sync? Кроме того, если вы нарушаете зависание пользовательского интерфейса из-за длительных операций (что я слышу во второй части вашего вопроса), вы можете уточнить, что мы можем его решить. –

+0

Добавленное обновление делает его более понятным? –

ответ

0

, когда активность идет на фон,

onPause() -> onStop()

методов будут выполняться в последовательности, если активность частично видна только OnPause(), если активность полностью невидимая другой активность, OnStop() метод будет выполнен после onPause().

onDestroy() 

метод будет выполняться, если вы либо называются послевкусием(), или если нет достаточного объема памяти в системе, и система уничтожает его. Вы не можете полагаться на методDestroy(), если вы не вызвали метод finish().

Для сохранения ваших данных лучше всего использовать метод onStop().

+0

Но есть ли что-то, что работает на уровне «всего приложения», поэтому я запускаю событие только тогда, когда приложение полностью отклонено, а не при переходе от одного вида деятельности к другому. –

+0

У вас есть 2 варианта здесь: переопределить onStop() для каждого действия или создать базовый класс активности, а ваши другие действия расширят его. В конце вы будете уверены, что ваши методы будут выполнены. –

0

nr4bt имеет действительную точку и в зависимости от вашей требуемой функциональности, хороший вариант.

Глобальным подходом было бы начать Service при запуске приложения.

  • Сделать это Service Responsable для ваших операций синхронизации с подходящими обратных вызовов для вашего активного Activity.

  • Сделайте это Service осведомлено о вашей жизни/приостановлено/остановлено Activity. Когда последний закончен -> Сделайте свою последнюю синхронизацию и убейте Service

Смежные вопросы