Запуск службы в фоновом режиме, как WhatsApp

Я не знаю, почему этот код не работает, я пытаюсь в фоновом режиме, как WhatsApp, который работает вечно и проверяет уведомления.

Но это не работает, я не знаю, где я делаю неправильно.

  1. Я добавил сервис в Android манифест

<receiver android:name=".Notifications"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <action android:name="android.intent.action.TIMEZONE_CHANGED" /> <action android:name="android.intent.action.TIME_SET" /> <action android:name="com.application.Notifications" /> </intent-filter> </receiver> <service android:name=".BackgroundWorker"></service>

  1. Я создал три класса "BackgroundWorker расширяет IntentService"

`public BackgroundWorker () {super (" androidservice "); }

@Override
protected void onHandleIntent(Intent intent) {



    Log.v("BackgroundWorker:","working" );

    //user method
    createNotification(getApplicationContext(),"BackgroundWorker");
}`

2. класс "Уведомления расширяет BroadcastReceiver"

@Override
public void onReceive(final Context context, Intent intent) {

    Log.d("BroadcastReceiver","onReceive");

    Intent t = new Intent(context,BackgroundWorker.class);
    context.startService(t);

}

3. Я создал третий класс ` Long alertTime = new GregorianCalendar(). GetTimeInMillis() + 1*1000;

    Intent notifications = new Intent(this,Notifications.class);

    AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);

    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,alertTime,1*1000,PendingIntent.getBroadcast(this,
            1,
            notifications,
            PendingIntent.FLAG_UPDATE_CURRENT));

    Log.d("AlarmManager",alarmManager.toString());`

Я не знаю, где я делаю неправильно.

** Хотя я установил 1 секунду для повторения, но все равно я получаю уведомление с интервалом в 5 минут **

И я проверил службу Android, мое приложение не работает, пожалуйста, помогите мне...

06-16 10:25:21.537 9833-9833/ D/BroadcastReceiver: onReceive 06-16 10:25:21.614 9833-12666/D/BroadcastReceiver: createNotification 06-16 10:30:21.245 9833-9833/ D/BroadcastReceiver: onReceive 06-16 10:30:21.376 9833-15746/r D/BroadcastReceiver: createNotification 06-16 10:35:21.209 9833-9833/ D/BroadcastReceiver: onReceive 06-16 10:35:21.283 9833-18645/ D/BroadcastReceiver: createNotification 06-16 10:40:21.179 9833-9833/ D/BroadcastReceiver: onReceive 06-16 10:40:21.224 9833-21479/ D/BroadcastReceiver: createNotification 06-16 10:45:21.188 9833-9833/ D/BroadcastReceiver: onReceive 06-16 10:45:21.246 9833-24302/ D/BroadcastReceiver: createNotification

1 ответ

Решение

IntentService останавливается после выполнения кода в onHandleIntent(). Вам необходимо расширить обычный сервис и самостоятельно обрабатывать потоки. Если вы не вызовете stopSelf, служба продолжит работу (возможно, пока система не убьет ее).