我有一个服务,我尝试将消息发送到我的主要活动,就像这样:
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);
}
如何在我的活动中获取此消息数据?
答案 0 :(得分:2)
在你的活动中,你应该创建一个像这样的处理程序,并在启动之前将对处理程序的引用传递给服务...
handler = new Handler() {
@Override
public void handleMessage(Message msg) {
//msg.arg1
}
};
但是现在你正在服务中创建一个处理程序,但这不是你想要做的!
答案 1 :(得分:1)
另一种方法是将您的Activity绑定到您的服务,以便他们可以进行通信。
答案 2 :(得分:0)
将您的数据放入message.obj
并从您的活动中的此字段中获取。您的数据可以是一个类,您可以定义它的方式。
答案 3 :(得分:0)
有simple example 项目(由CommonsWare创建),其中显示了如何通过Service
从Activity
向Handler
发送消息。看看
答案 4 :(得分: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..
};
};
希望它有帮助..!