0

アプリの5つのアクティビティのそれぞれに次のコードがあります。これらの5つの活動に結びついたサービスを継続して実行したかったのです。バックグラウンドで音楽を再生します。ただし、ユーザーがこれら5つのアクティビティのいずれかから離れると、サービスを強制終了する必要があります。以下のコードを使用して、アクティビティ間を移動するときに音楽がバックグラウンドで再生されるように取得できます。ただし、サービスはアプリケーションを終了した後も実行を続けます。この問題を解決するための最良の方法は何ですか?いくつかの創造的なアイデアはどうですか。

このToastメッセージをサービスのonDestroyメソッドに入れて、サービスがいつ停止したかを確認できるようにします。

 Toast.makeText(this, "My Service Destroyed", Toast.LENGTH_LONG).show();

アプリケーションを終了するときに、Toastメッセージがポップアップ表示されることはありません。他のトーストメッセージは、サービスが開始されたことを示すために表示されます。

@Override
public void onPause() {
    super.onPause();
    unbindService(serviceConnection);
}

@Override
public void onResume() { 
    //After a pause OR at startup
    super.onResume();
    //add this to the onResume of the activity
    //  startService(new Intent(this, AudioService.class));
    bindService(new Intent(this, AudioService.class), 
                  serviceConnection, Context.BIND_AUTO_CREATE);

}
4

1 に答える 1

1

ここのドキュメントによると:

一度に複数のクライアントをサービスにバインドできます。クライアントがサービスとの対話を完了すると、unbindService() を呼び出してバインドを解除します。サービスにバインドされているクライアントがなくなると、システムはサービスを破棄します。

そのため、アクティビティの 1 つでアンバインドが不足している可能性があります。これは、サービスのonBindメソッドとonUnbindメソッドでログを出力することで確認できます。

于 2012-12-17T11:21:58.297 に答える