2015-08-02 4 views
1

У меня есть функция, которая читает содержимое буфера обмена Android каждые две секунды и передает все изменения с удаленного сервера.Запустить петлю на фоне в Android

Это нормально работает в приложении. Но мне нужно иметь возможность продолжить запись изменений в буфер обмена после закрытия приложения.

Так что я пробовал IntentService, но он не ценит длинные петли.

Как я могу запустить свой бесконечный цикл в фоновом режиме?

ответ

1

IntentService следует использовать для обработки одного «запроса», от другого прикладного компонента, по времени.

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

Использовать START_STICKY в качестве возврата с onStartCommand() Способ автоматического запуска его снова, когда система убивает его.

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

0

Реализовать Service и сделать его липким, возвращая START_STICKY в onStartCommand (см Documentation):

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    // We want this service to continue running until it is explicitly 
    // stopped, so return sticky. 
    return START_STICKY; 
} 
2

У меня есть функция, которая считывает содержимое Android буфера каждые две секунды и передает все изменения с удаленный сервер.

Опрос? Вы делаете это ОЧЕНЬ неправильно. Вместо этого вы должны использовать OnPrimaryClipChangedListener.

РЕДАКТИРОВАТЬ

передает все изменения с удаленным сервером.

Я просто понял, что вы в основном делаете что-то плохое, и я немного скептически верю, что ваши пользователи знают, что вы буквально следили за ними? Является ли ваше приложение в Google Play, если это так, то есть ваш идентификатор пакета приложения?

+0

Пока нет, но это будет в Google Play. Я понимаю вашу озабоченность, но удаленный сервер находится в локальной сети пользователей. Это позволит использовать общий буфер обмена между телефоном и компьютером. Нет опасности;) –

+1

Я поддержал ваш ответ, потому что он был очень полезен, но на самом деле он не отвечает на мой вопрос, поэтому принятый ответ - это kycera's. Спасибо, что указали на существование 'OnPrimaryClipChangedListener' –

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