2017-01-31 86 views
0

我的Android应用程序启动一个本地前台服务(与我的活动在同一个进程中)。服务必须保持活力,即使系统由于内存不足而破坏活动。Android服务重启后丢失静态数据

下次用户启动应用程序时,我需要检查服务是否正在运行。 我试图在public static boolean Started = false;旗服务类中存储状态(我知道这是不好的做法)。

我的活动在服务运行的过程中开始。我想,这个静态构造函数被称为ones。所以,我可以在活动中检查这个标志。但是,静态数据将重新初始化为默认值。

任何人都可以告诉我这种行为吗?

+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; 
    } 
} 

然后存储布尔运行