1

アクティビティとサービスの間の通信を作成するために ICP を使用しています。インターフェイスを使用してアクティビティからサービスのメソッドを呼び出すことができます。

私の問題は、サービスからアクティビティにデータをプッシュしたい場合があることです。サービスからアクティビティのメソッドを呼び出したいのです。例: updateTextView(String msg);

あまりパフォーマンスが良くないことを読んだので、ブロードキャストを使用したくありません。

コールバックについて読んだことがありますが、作成方法と配置場所がわかりません。

ありがとうございました !

4

2 に答える 2

0

サービスを開始するバンドルを配置できます。アクティビティに戻すサービスにそのバンドルを入力します。次に、バンドルをアクティビティに戻します。

于 2012-07-26T23:06:11.543 に答える
0

Handler を介してこれを試すことができます。アクティビティでフィールド Handler を作成し、Service で同じクラスの他のものを作成し、onServiceConnected メソッドで Service のメソッド setHandler を呼び出します。次に、Service の handler を介して Activity の handler フィールドにメッセージを送信できます。

public class mService extends Service{
 private myHandler handler;
.....
  public void setHandler(myHandler activityHandler){
 this.handler=activityHandler;
 }
}

public class Activity extends Activity{
  private myHandler activityHandler;
  ....
  public class myHandler extends Handler{

        @Override
        public void handleMessage(Message msg){

            switch(msg.what){
            //Implement this
          }
      }
}   
      private ServiceConnection mConnection = new ServiceConnection() {

            @Override
            public void onServiceConnected(ComponentName className,
                    IBinder service) {
                    .....
                mService= binder.getService();
                mBound = true;
                mService.setHandler(dHandler);
            }

            @Override
            public void onServiceDisconnected(ComponentName arg0) {
                mBound = false;
            }
        };
}
于 2012-07-26T23:24:15.770 に答える