我从服务控制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躲起来了吗?
我可以帮我解决一下吗?非常感谢。
答案 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.
}
}