9

これは私のコードですActivityIntentを開始してからConnectionを開始しますよね?

hello_service = new Intent(this, HelloService.class);
hello_service_conn = new HelloServiceConnection();
bindService( hello_service, hello_service_conn, Context.BIND_AUTO_CREATE);

しかし、私の質問は...接続の中には何が入っていますか?

   class HelloServiceConnection implements ServiceConnection {
        public void onServiceConnected(ComponentName className,IBinder boundService ) {

        }
        public void onServiceDisconnected(ComponentName className) {

        }
    };

onServiceConnectedonServiceDisconnectedに入れたコードを教えてもらえますか?

ActivityServiceが互いに会話できるように、基本的な接続が必要なだけです。

編集:良いチュートリアルを見つけました。誰かが答えたくない限り、実際にこの質問を閉じることができます。http://www.androidcompetencycenter.com/2009/01/basics-of-android-part-iii-android-services/

4

3 に答える 3

16

Google が提供するサービスの例に従うと、サービスでメモリ リークが発生することを指摘したいと思います。適切に行う方法については、このチャップスの優れた投稿を参照してください (関連する Google のバグに投票してください)。

http://www.ozdroid.com/#!BLOG/2010/12/19/How_to_make_a_local_Service_and_bind_to_it_in_Android

于 2011-01-10T12:06:11.863 に答える
5

アクティビティからサービスへのバインドは、アクティビティの構成が変更されたときに問題が発生するため、避ける必要があります (たとえば、デバイスがローテーションされた場合、アクティビティが最初から作成され、バインドを再作成する必要があります)。Stackoverflow Communicate with Activity from Service (LocalService) - Android Best Practices
に関する次の投稿の Commonsware からのコメントを参照してください。

于 2011-03-17T13:03:17.860 に答える
1

サービスをアクティビティに接続するには、 ServiceConnection 実装に記述する必要があるのは次のとおりです。

@Override
public void onServiceDisconnected(ComponentName name) {
mServiceBound = false;
}

@Override
public void onServiceConnected(ComponentName name, IBinder service) {
MyBinder myBinder = (MyBinder) service;
mBoundService = myBinder.getService();
mServiceBound = true;
}

ここで、mBoundService はバインドされたサービスのオブジェクトです。このBound Service Exampleをご覧ください。

于 2014-11-26T17:08:15.300 に答える