我已经寻找了相当长一段时间,寻找一些好的文档或示例。我需要从在后台运行的服务中的工作线程中更改主活动UI。据我所知,我应该使用某种处理程序来处理此问题,但我不确定如何处理。
是否有任何想法或好的示例可以指导我?我正在更改的UI元素是一个TextView,仅向用户显示线程的状态。
感谢您的帮助。
我已经寻找了相当长一段时间,寻找一些好的文档或示例。我需要从在后台运行的服务中的工作线程中更改主活动UI。据我所知,我应该使用某种处理程序来处理此问题,但我不确定如何处理。
是否有任何想法或好的示例可以指导我?我正在更改的UI元素是一个TextView,仅向用户显示线程的状态。
感谢您的帮助。
Handler
即可:private Handler serviceHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
someFunctionInTheUIThread();
}
};
然后将其传递到您的服务中。您可以在服务中拥有这样一个函数:
public void registerHandler(Handler serviceHandler) {
handler = serviceHandler;
}
theService = ((LocalBinder) service).getService();
theService.registerHandler(serviceHandler);
然后发送一条回复消息:
Message msg = handler.obtainMessage(IDENTIFIER, "Message or data");
handler.sendMessage(msg);
请了解服务绑定(Service Binding)。或者您可以在主活动中使用广播接收器(BroadcastReceiver)接收服务的广播。