android - 从服务中的线程更改主 Activity 用户界面

标签 android multithreading user-interface service handler

我一直在寻找一些好的文档或一个很好的例子。我需要从后台运行的服务中的工作线程更改我的主要 Activity UI。据我所知,我知道我应该使用某种处理程序,但我不确定如何处理这个问题。

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

感谢您的帮助。

最佳答案

您所要做的就是在 UI 线程上创建一个 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);

关于android - 从服务中的线程更改主 Activity 用户界面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7285785/

相关文章:

android - 如何将#RGB 转换为#RRGGBB

android - SharedPreferences apply() 和 commit() 什么时候会失败?

java - 下面的 java 代码在没有 volatile 的情况下是线程安全的吗?

java - 为什么我的线程即使处于无限循环中也只执行一次?

multithreading - GPU 核心如何相互通信?

android - 如何避免 android opensl es 销毁引擎对象时崩溃?

android - 错误 : No Retrofit annotation found.(参数 #2)

html - Bootstrap 3 网格行跨度

c# - WPF 与 C++,这可能吗?

performance - 是否有一个普遍可接受的(软)实时延迟定义?