Используйте AlarmManager. Вы заставляете поток спать, но я не уверен, что Android гарантирует, что он будет работать таким образом. Нечто подобное должно помочь вам. Это будет запускать услугу каждый час:
PendingIntent serviceIntent= PendingIntent.getService(context,
0, new Intent(context, MyService.class), 0);
long firstTime = SystemClock.elapsedRealtime();
AlarmManager am = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
long currenciesIntervalInSec = 3600;
if (automaticCurrencies)
am.setRepeating(AlarmManager.ELAPSED_REALTIME, firstTime, currenciesIntervalInSec*1000, serviceIntent);
Edit:
Вы должны расширить IntentService. Он заботится о потоках, и все делается в фоновом режиме (это особенно полезно, если вам нужно делать вещи в фоновом режиме, и вам не нужно несколько потоков одновременно). Все, что вы указали в HandleIntent, будет выполнено при запуске службы. Внутренне он будет хранить список очереди.
Например, это простой класс обслуживания (вам нужно создать оба конструктора):
public class MyService extends IntentService {
public MyService() {
super("MyService");
}
public MyService(String name) {
super(name);
}
@Override
protected void onHandleIntent(Intent arg0) {
if (isNetworkAvailable()) {
doServiceWork();
check("SLeEPING!!!", c);
}
else {
check ("NO INTERNET", c);
}
}
}
Кроме того, вам нужно добавить это в свой манифест (конечно, с вашим собственным пакетом):
<service android:name="com.services.MyService"/>