По примеру из статьи
Написание простого приложения для работы с RESTful..., реализовал свое приложение, которое запрашивает новости и сохраняет время последнего обновления
Никак не могу добиться обновления данных через заданный промежуток времени в фоне.
По советам на Stack Overflow использую Alarm Manager прямо из Operation
request.put("id", user_id);
request.put(Tweets.CREATED,
prefs.getString(user_id + "_" + Tweets.CREATED, ""));
Intent intent = new Intent(context, RestService.class);
intent.putExtra(RestService.INTENT_EXTRA_REQUEST, request);
PendingIntent pendingIntent = PendingIntent.getService(context, 0,
intent, 0);
AlarmManager am = (AlarmManager) context
.getSystemService(Context.ALARM_SERVICE);
am.cancel(pendingIntent);
long interval = 1000 * 60 * Integer.parseInt(prefs.getString("interval", "5"));
am.set(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime()
+ interval, pendingIntent);
^ проблема в том что am.cancel не срабатывает (ведь Intent то уже другой) и в результате получать одно и тоже сообщение можно бесконечно.
В ходе своих изысканий понял что нужно по таймеру выполнять метод update из MainActivity
void update() {
listView.setRefreshing();
if (!user_id.equals("0")) {
Request updateRequest = new Request(RequestFactory.REQUEST_TWEETS);
updateRequest.put("method", "projects.feed");
updateRequest.put("id", user_id);
updateRequest.put(Tweets.CREATED,
prefs.getString(user_id + "_" + Tweets.CREATED, ""));
requestManager.execute(updateRequest, requestListener);
} else {
listView.onRefreshComplete();
}
}
но разве так можно? А если и можно то как этого достичь?