2017-01-31 12 views
0

Приложение для Android запускает локальную службу переднего плана (в том же процессе, что и моя активность). Служба должна оставаться в живых, даже если система уничтожает активность из-за низкой памяти.Статические данные, потерянные после перезагрузки службы поддержки Android

В следующий раз, когда пользователь запустит приложение, мне нужно проверить, работает ли служба. Я попытался сохранить состояние в public static boolean Started = false; флаг в классе обслуживания (я знаю, что это плохая практика).

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

Может ли кто-нибудь дать мне подсказку по поводу этого поведения?

+0

его хорошо, если сервис рестарта, если приложения приходят на передний план? –

+0

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

+0

. Я написал несколько ответов, поэтому вам легко скопировать его. –

ответ

0

здесь просто пример того, как я перезапустить службу, когда приложения приходят forground

public void storeLastLocation() { 
    if (!isStoreLocationActive){ 
     Log.d("IQ MA", "storeLastLocation() called"); 

     String access_token = Configs.access_token; 
     Intent intent = new Intent(MainActivity.this, StoreLocationService.class); 
     intent.putExtra("access_token", access_token); 
     stopService(intent); 
     startService(intent); 

     isStoreLocationActive = true; 
    } 
} 

затем магазин булево на сервис работает