У меня возникли некоторые трудности с выполнением службы, которая должна запускаться периодически. Приложение работает нормально, когда экран включен, и даже если приложение удалено из последних задач. Но когда устройство заблокировано, приложение останавливается и даже когда экран снова включается, служба не возвращается. Я реализовал WakefulBroadcastReceiver с действием для SCREEN_ON, но он работает только тогда, когда приложение остается в живых, оно не работает, когда работает только служба. Служба и WakefulBroadcastReceiver объявляются, как это в моем AndroidManifest:AlarmManager не работает, когда экран заблокирован
<service android:name=".FeedService" />
<receiver android:name=".AutoStart">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.SCREEN_ON" />
</intent-filter>
</receiver>
Я также добавил следующие разрешения моего AndroidManifest файла:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
Это мой WakefulBroadcastReceiver:
public class AutoStart extends WakefulBroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.d("Feed", "AutoStart.onReceive");
context.startService(new Intent(context, FeedService.class));
}
}
И это моя служба:
public class FeedService extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.d("Feed", "FeedService.onStartCommand");
stopSelf();
return START_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
Log.d("Feed", "FeedService.onBind");
return null;
}
@Override
public void onDestroy() {
// I want to restart this service again in 5 seconds
AlarmManager alarm = (AlarmManager)getSystemService(ALARM_SERVICE);
alarm.set(
alarm.RTC_WAKEUP,
System.currentTimeMillis() + (5000),
PendingIntent.getService(this, 0, new Intent(this, FeedService.class), 0)
);
}
}
В моей MainActivity я запустить службу с:
AlarmManager alarm = (AlarmManager)getSystemService(ALARM_SERVICE);
alarm.set(
alarm.RTC_WAKEUP,
System.currentTimeMillis() + (5000),
PendingIntent.getService(this, 0, new Intent(this, FeedService.class), 0)
);
Это важно для моего приложения, останавливать эту службу, и я не понимаю, почему это не происходит. Может ли кто-нибудь объяснить мне, как я могу это решить?
Нет, это не будет автоматически проверено –