2017-01-31 11 views
1

私はアンドロイドの自動開発していますが、私はServiceOnbind方法で私のコードのこの部分でいくつかの問題を持っている:Androidの自動SERVICE_INTERFACE MediaBrowserServiceCompat

public IBinder onBind(Intent arg0) { 
    Log.i("TAG", "OnBind"); 
    // TODO Auto-generated method stub 
    if (SERVICE_INTERFACE.equals(arg0.getAction())) { 
     Log.i("TAG", "SERVICE_INTERFACE"); 
     registerReceiver(receiver, filter); 
     return super.onBind(arg0); 
    } 
    else{ Log.i("Musica Service", "musicBind"); 
     return musicBind;} 
} 

私はmusicBindを通じて私のサービスを結合させた別の活動を持っていますIBinderしかし、私はAndroidの自動インターフェイスで私のアプリを接続するためにすべてのものを設定しているが、Androidの自動からデバイスを切断した後、私のアプリを終了した後私はMediaBrowserServiceCompat私はこのSERVICE_INTERFACEをバインドされたサービスをバインドしていると思います。

同じサービスMediaBrowserServiceCompatからこのサービスを停止または破棄するにはどうすればよいですか?

答えて

2

MediaBrowserServiceCompatは、最後のクライアントがバインド解除されると破棄されるか、開始される(バックグラウンドで音楽を再生するなど)、またはバインドされて開始されるあなたのUIが見える間に音楽を再生するとき)。

サービスは、1)バインドされたクライアントがなくなったとき、および(2)stopSelf()(ある時点で開始されたと仮定して)にコールしたときにのみ破棄されます。何百もの他のアプリを扱っていたAndroid Autoが引き続きあなたのサービスにバインドし、すべてのメディアアプリに適用される重大な問題ではないようです。

したがって、サービスが何らかの形で開始されている可能性は非常に高いです。 Media Session callbacks documentationの場合は、再生を開始するときにstartService、再生を停止するときにstopSelfに電話する必要があります。これにより、再生が停止したときにサービスが拘束されていないとしても破棄されます。

adb shell dumpsys activity servicesを使用してサービスのステータスを見ることができます(オプションで、サービスクラスの名前を追加して、そのクラスだけをフィルタリングすることもできます)。

関連する問題