3

サービスがあり、次のようにプライマリ アクティビティにメッセージを送信しようとしています。

public void callAsynchronousTask() {
    final Handler handler = new Handler();
    Timer timer = new Timer();
    TimerTask doAsynchronousTask = new TimerTask() {
        @Override
        public void run() {
            handler.post(new Runnable() {
                public void run() {
                    try {
                        Message m = new Message();
                        m.arg1 = 10;
                        m.arg2 = 15;
                        handler.sendMessage(m);
                        Log.i("Sent", "!");

                    } catch (Exception e) {}
                }
            });
        }

};
timer.schedule(doAsynchronousTask, 0, 3000); 
}

Activity でこのメッセージ データを取得するにはどうすればよいですか?

4

5 に答える 5

2

アクティビティでは、このようなハンドラーを作成し、ハンドラーへの参照をサービスに渡してから開始する必要があります...

handler = new Handler() {
  @Override
  public void handleMessage(Message msg) {
    //msg.arg1
  }
};

しかし今、あなたはサービス内にハンドラーを作成していますが、それはあなたがやりたかったことではありません!

于 2013-02-22T14:25:27.650 に答える
1

別の方法は、Activity を Service にバインドして通信できるようにすることです。

参照 http://developer.android.com/reference/android/content/Context.html#bindService(android.content.Intent, android.content.ServiceConnection, int)

于 2013-02-22T14:22:10.150 に答える
0

データを入力しmessage.objて、アクティビティのこのフィールドから取得します。データは、必要に応じて定義できるクラスにすることができます。

于 2013-02-22T14:29:02.480 に答える
0

から経由でにメッセージを送信する方法を示す簡単なサンプルプロジェクト ( CommonsWareによって作成されたもの) があります。見てみなServiceActivityHandler

于 2013-02-22T15:08:31.353 に答える
0
        //use this code to send data to activity

         Bundle data = new Bundle();
            data.putString("data", result);
            Message msg = Message.obtain();
            msg.setData(data);
            replyTo.sendMessage(msg);        //replyTo is handler declared in your main_Activity 






    //Pass this **replyTo** handler when you call your service from mainActivity..
          Handler replyTo= new Handler() {
            public void handleMessage(Message msg) {
            //get data here and do what you want..
        };
        };

それが役に立てば幸い..!

于 2015-02-25T05:41:01.903 に答える