У меня есть приложение Android Wear (WearOS), которое после работы в течение очень длительного периода времени (скажем, 1 час плюс) иногда теряет свое состояние.
Под потерей своего состояния я подразумеваю, что после долгой работы приложение возобновляет работу в «состоянии A» из своего уведомления.
- Состояние A: Остановлен - простаивает.
- Состояние B: Бег - сбор данных GPS.
Однако, если приложение работает, скажем, 20 минут, оно правильно возобновляет работу в «состоянии B» из своего уведомления.
Мой класс обслуживания:
public int onStartCommand(Intent intent, int flags, int startId) {
Notification notification = this.createNotification();
super.startForeground(PID, notification);
return START_STICKY;
}
private Notification createNotification(){
Log.i("MyService", "createNotification");
Intent mainIntent = new Intent(this, MyActivity.class);
mainIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this,0, mainIntent,0);
// shortened for breviety ... creates notification ...
return notification;
}
Мой класс активности:
private void startWatching() {
if(this.intentService != null){
this.stopGpsAndCloseDb();
}
this.intentService = new Intent(this, MyService.class);
this.intentService.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
super.startService(intentService);
}
Может ли кто-нибудь пролить свет на эту проблему, что мне не хватает? Спасибо!
Service
событий жизненного цикла, чтобы понять, что происходит, когда это происходит. - person String   schedule 23.07.2018