1

サービスを Android で動作させようとしています。アプリケーションは今すぐサービスを開始できますが、サービスがバックグラウンドで実行されているときに (Main)Activity を開始すると、サービスが再起動します (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;
}

サービスが実行されていると、コンソールに「De serice is running」と表示されます。

自分でサービスを再起動しなかったのに、なぜonCreate()andが呼び出されるのですか? onStartCommand()サービスが既に開始されているときに、サービスが 2 回開始されないようにするにはどうすればよいですか?

EDIT 1 2013-10-07 8:54 PM:

私のサービスクラス:

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

1 に答える 1