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

另一种方法是将您的活动绑定到您的服务,以便他们可以通信。

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

于 2013-02-22T14:22:10.150 回答
0

有一个简单的示例项目(由CommonsWare创建),它展示了如何从ServiceActivityvia发送消息Handler。一探究竟

于 2013-02-22T15:08:31.353 回答
0

将您的数据放入message.obj并从您的活动中的该字段中获取。您的数据可以是一个类,您可以定义您想要的方式。

于 2013-02-22T14:29:02.480 回答
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 回答