Я делаю простой сервис, который каждые 10 минут загружает WebPage (HTML-код) и уведомляет пользователя, если что-то изменилось. Теперь проблема в том, что первые 3-4 уведомления отображаются правильно, но после них существует важная задержка между уведомлениями, и иногда они не поступают. Вот мой код: Monitor.javaПоздние уведомления о фоновой службе
public void onCreate() {
super.onCreate();
customHandler = new android.os.Handler();
customHandler.postDelayed(runnable, 0);
}
Runnable runnable = new Runnable() {
@Override
public void run() {
RUN = true;
LINK = readMessage("ADDR");
Ion.with(getApplicationContext()).load(LINK).asString().setCallback(new FutureCallback<String>() {
@Override
public void onCompleted(Exception e, String result) {
Risultad = result;
if (fileExists(getApplicationContext(), "AVV") == false)
{
Savefile(Risultad, "AVV");
Intent i = new Intent(getApplicationContext(), MainActivity.class);
PendingIntent pi = PendingIntent.getActivity(getApplicationContext(), 0, i, 0);
NotificationManager notificationManager = (NotificationManager)
getSystemService(NOTIFICATION_SERVICE);
NotificationCompat.Builder n = new NotificationCompat.Builder(getApplicationContext())
.setContentTitle("First")
.setContentText(Risultad.toString())
.setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION))
.setVibrate(new long[]{2000})
.setContentIntent(pi)
.setAutoCancel(true)
.setSmallIcon(android.R.drawable.ic_dialog_email);
notificationManager.notify(0, n.build());
}
if (fileExists(getApplicationContext(), "AVV") == true)
{
final String OldAvv = readMessage("AVV");
if (Risultad.equals(OldAvv + "\r\n") == false) {
Savefile(result, "AVV");
Intent i = new Intent(getApplicationContext(), MainActivity.class);
PendingIntent pi = PendingIntent.getActivity(getApplicationContext(), 0, i, 0);
NotificationManager notificationManager = (NotificationManager)
getSystemService(NOTIFICATION_SERVICE);
NotificationCompat.Builder n = new NotificationCompat.Builder(getApplicationContext())
.setContentTitle("Something happened")
.setContentText(result.toString())
.setContentIntent(pi)
.setAutoCancel(true)
.setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION))
.setSmallIcon(android.R.drawable.ic_dialog_email);
notificationManager.notify(0, n.build());
}
}
}
});
customHandler.postDelayed(this, 300000);
}
Я использую библиотеку Ion, чтобы загрузить страницу. readMessage, SaveFile и fileExist используются для чтения, сохранения или проверки кода HTML, хранящегося на устройстве.
Иногда уведомления отображаются при открытии приложения.
Что делать, чтобы получать уведомления вовремя?
Да, я видел, но я не понимаю, как использовать его с BroadcastReceiver на ботинке завершенного – Rockietto
Я добавил ссылку на ответ с некоторыми примерами кода , В BroadcastReceiver, прослушивающем намерение загрузки, вы можете сбросить тревогу с помощью методов AlarmManager, таких как setRepeating, setInexactRepeating и т. Д. –