从服务中的线程更改主活动UI

gtd*_*vel 4 service user-interface multithreading android handler

我一直在寻找一些好的文档或一个很好的例子.我需要从我在后台运行的服务中的工作线程更改我的主活动UI.据我了解,我知道,我想用某种处理程序的工作,但我不知道究竟如何处理这个.

有没有人有任何想法或好的例子,他们可以指导我?我正在更改的UI元素是一个TextView,它只是通知用户线程的状态.

谢谢你的帮助.

Mar*_*tyn 7

您所要做的就是Handler在UI线程上创建一个:

private Handler serviceHandler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        someFunctionInTheUIThread();
    }
};
Run Code Online (Sandbox Code Playgroud)

然后将其传递给您的服务.您可以在服务中拥有这样的功能:

public void registerHandler(Handler serviceHandler) {
    handler = serviceHandler;
}
Run Code Online (Sandbox Code Playgroud)

然后像这样传递处理程序:

theService = ((LocalBinder) service).getService();
theService.registerHandler(serviceHandler);
Run Code Online (Sandbox Code Playgroud)

然后发回信息:

Message msg = handler.obtainMessage(IDENTIFIER, "Message or data");
handler.sendMessage(msg);
Run Code Online (Sandbox Code Playgroud)