2013-10-25 4 views
0

Я написал службу, которая извлекает данные из веб-службы на основе CRM и помещает в базу данных по телефону. Теперь эту услугу нужно запускать каждые 3 часа, чтобы она могла синхронизировать данные между CRM и базой данных Android.Запуск службы с длительным сроком службы

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

Intent intent = new Intent(ServiceClass.this, ServiceClass.class); 
PendingIntent pintent = PendingIntent.getService(ServiceClass.this, 0, intent, 0); 
AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE); 
alarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 10800*1000, pintent); 

Эта служба должна быть запущена после перезагрузки, для этой цели Я использую method outlined here..

Я просто хочу знать, если я буду на правильном пути, или если я совершая ошибку или если есть лучший способ сделать это. Я не очень много работал с Android и просто нуждаюсь в нескольких указателях. Благодаря!

+0

какой сервис вы используете, надеюсь, его «IntentService» – tyczj

+0

@tyczj Я использую класс, который реализует Service. Если это перебор, я буду использовать IntentService –

ответ

2

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

И я согласен с @tyczj, вы должны определенно определить свой ServiceClass как IntentService. IntentService - это подкласс Службы, который работает в фоновом режиме и специально разработан для выполнения конкретной задачи, а затем убивает себя, как только он будет завершен. Он идеально подходит для загрузки данных и синхронизации фона.

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

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

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