похожего на @Murtuza Кабул я бы сказал, использовать услугу, но это немного сложно. У нас есть аналогичная ситуация, связанная с постоянным доступом в Интернет и обновлениями, хотя наша компания уделяет больше внимания поддержанию работы службы. Постараюсь выделить основные черты, не тонет вас слишком много деталей (и кода принадлежат компании;))
android.permission.RECEIVE_BOOT_COMPLETED
разрешения и BroadcastReceiver
прослушивание android.intent.action.BOOT_COMPLETED
совать службу просыпается.
Не связывайте службу с Activity, вы хотите, чтобы она работала все время. например, мы называем context.startService(new Intent(context.getApplicationContext(), OurService.class))
классом обслуживания является лишь простым классом, который регистрирует и называет OurServiceHandler
(как в нашем случае мы выпалить повторные проверки и Handler
управляет «галочками»)
У нас есть OurServiceRunnable
, который является одноточечным, который проверяется и вызывается Handler
для каждого теста. Он защищает от перекрывающихся обновлений. Он делегирует OurServiceWorker
для фактического подъема.
Звуки тяжелой рукой, но вы хотите, чтобы убедиться, что служба всегда работает, всегда тикают (через Handler
), но только работает один чек в то время. Вы также столкнетесь с проблемой базы данных, если используете стандартную парадигму SqlLite DbHelper, так как вы не можете открыть БД на нескольких потоках, а вы определенно хотите получить доступ в Интернет с основного потока. Наш хак был java.util.concurrent.locks.ReentrantLock
, защищающий доступ к БД, но вы, вероятно, могли бы поддерживать доступ к БД в потоке пользовательского интерфейса и выполнять операции БД через Handler
.
Помимо этого, это просто вопрос сохранения атомных данных с точки зрения «получить задание, загрузить задачу, выполнить задачу» или включить ее для сбоя из отказавшего состояния, например, загрузить ОК, попытаться завершить.
Возможно 'IntentService' если вы хотите сохранить загрузку, пока приложение закрыто. – Ran
Просто идея: возможно, используя couchDB как услугу? http://arandomurl.com/2011/02/13/developing-with-couchdb-on-android.html –