服务无法控制活动用户界面?

时间:2014-10-06 03:26:55

标签: android

我从服务控制Activity UI时遇到问题。它没有用。

类MainActivity

public void showNotice() {
    Log.d("log", "can't connect to server");
    tvText.setText(notice);
    tvTex.setVisibility(View.VISIBLE);
    pbDialog.hide();
}

我在我的服务中调用showNotice方法:

((MainActivity) mContext).showNotice();

但它只显示日志"无法连接到服务器"。

tvText不会更改任何内容,不会更改文本,也不会显示。 pbDialog躲起来了吗?

我可以帮我解决一下吗?非常感谢。

1 个答案:

答案 0 :(得分:1)

服务在自己的后台线程中运行,只能从UI线程修改UI,这与主要活动非常相似。

您可以尝试这样做,当您想要隐藏对话框时,可以从服务广播事件。为此注册一个广播监听器来处理UI修改。您可能应该使用LocalBroadcastManager并为您的广播指定唯一名称。

在mainActivity中,使用

registerReceiver(<receiver instance>, <broadcast name>)
在onStart或onCreate方法中

这将设置你的mainActivity来收听广播,接下来你需要定义你在上面的注册调用中的广播接收器。

BroadcastReceiver receiver;
receiver = new BroadcastReceiver() {
    public void onReceive(Context c, Intent i) {
        //Modify the UI, in this case hide the dialog box.
    }
}