1
我正在嘗試在Android中使用服務。我的應用程序現在可以啓動我的服務,但是當服務在後臺運行並啓動我的(主)活動時,服務將重新啓動(將調用onCreate()
和onStartCommand()
命令)。在我的MainActivity我檢查,如果該服務已通過以下代碼運行:開始活動時重新啓動服務
if (isServiceRunning()){
System.out.println("De serice is running");
}
else{
System.out.println("De service is niet running");
startService(new Intent(this, YourService.class));
}
...
private boolean isServiceRunning() {
ActivityManager manager = (ActivityManager)getSystemService(ACTIVITY_SERVICE);
for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
Log.d("services", service.service.getClassName());
if ("com.vandervoorden.mijncijfers.YourService".equals(service.service.getClassName())) {
return true;
}
}
return false;
}
當我的服務正在運行的「德的貢獻莫過於正在運行」顯示在我的控制檯。
爲什麼在調用onCreate()
和onStartCommand()
時我自己沒有重新啓動服務?如何確保服務在啓動時不會啓動兩次?
編輯1 2013年10月7日下午8點54分:
我的服務類:
public class YourService extends Service
{
Alarm alarm = new Alarm();
public void onCreate()
{
super.onCreate();
System.out.println("service: onCreate");
}
public int onStartCommand(Intent intent, int flags, int startId) {
//alarm.SetAlarm(this);
System.out.println("service: onStartCommand");
return START_STICKY;
}
@Override
public IBinder onBind(Intent intent)
{
return null;
}
}