我有一个具有不同活动的 android 应用程序,它们都从网络源中提取数据。这是通过实现 Runnable 并创建一个将活动作为对象的线程来完成的。基本类如下所示:
public ActivityX extends Activity implements Runnable {
@Override
public onResume() {
super.onResume();
Thread someThread = new Thread(this);
someThread.start();
}
@Override
public run() {
try {
// pull web content
}
catch(TimeOutException e) {
// >>> create dialog here <<<
// go back to another activity
}
}
}
我尝试使用返回超时对话框的静态方法创建一个对话框助手类,然后像这样调用 show():
HelperClass.getTimeOutDialog().show();
但问题是,我不能从 run() 方法内部调用它,因为它在不同的线程中。如果我尝试这样做,我会得到一个运行时异常,说明:
无法在未调用 Looper.prepare() 的线程内创建处理程序
我需要为近十几个活动执行此对话框,并且我真的很想使用 Handler 对象并每次发送消息来调用对话框。没有更简单的方法可以做到这一点吗?不幸的是,我现在想不出任何东西。
我的代码看起来像这样:
handler.handleEmptyMessage(1);
这是调用处理程序。以下将处理该消息:
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
if(msg.what == 1) {
// show dialog here
}
}
};
干杯