0

私のアプリケーションにはいくつかのアクティビティが含まれています。(10以上)。スプラッシュ アクティビティ内でアプリが開始されると (アプリにスプラッシュがあってはいけないと主張する人もいるかもしれませんが、それはここでは重要ではありません)、私はサービスを開始しています。

ただし、多くのアクティビティが存在し、アプリはユーザー主導のアプリであるため、ユーザーがアプリを終了するか最小化することを決定した場合、ユーザーはいずれかのアクティビティに参加している可能性があります。

私の質問は、サービスが実行されているかどうかを確認するために、すべてのアクティビティのすべての onPause / onStop にチェックを含める必要がありますか?実行している場合は停止しますか? それとも、一カ所でやらなければならないことがありますか?

サービスが実行されているかどうかを確認するために、次を使用しています。

    private boolean isMyServiceRunning()
{
    ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
    for (RunningServiceInfo service : manager
            .getRunningServices(Integer.MAX_VALUE))
    {
        if (MyService.class.getName()
                .equals(service.service.getClassName()))
        {
            return true;
        }
    }
    return false;
}
4

3 に答える 3

0

オーバーロードされた onPause/onResume などのメソッドを使用して、標準アクティビティを一度拡張して使用できます。これにより、1 つのコードですべてのアクティビティの状態を制御できます。

于 2013-09-18T12:39:31.300 に答える
0

Service を拡張してサービスを作成した場合、このサービスはアプリを閉じると閉じられます。

&

IntentService を拡張してサービスを作成した場合、すべてのインテントが実行されると、このサービスは自動的に閉じられます。

于 2013-09-18T12:32:52.780 に答える
0

stopService()メソッドを使用してサービスを停止できます。stopService()メソッドを 1 回呼び出すだけで、サービスが停止します。

サービスは、stopSelf()メソッドを呼び出すことで、それ自体を終了できます。作業が終了したら、サービス クラスでこれを行います。

于 2013-09-18T12:33:02.677 に答える