我有一个连接到servlet的Android应用程序。如果servlet关闭(昨天发生在我身上)应用程序崩溃了。我需要向用户弹出一条消息,通知一些连接问题,然后终止应用程序。
在onCreate()方法上,我调用了一个AsyncTask类,其中第一个连接到服务器。我有一个try / catch(UnknownHostException e)块,如果sevlet关闭则会激活它。 问题是我不能在那里创建一个弹出消息。我尝试了toast和AllertDialogs,但都返回异常
Java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
还有其他方法可以做到这一点吗?在此先感谢,ilias
答案 0 :(得分:0)
你可以设置一个布尔值并在函数调用后读取它,此时你应该能够显示一个toast / dialog。但如果没有剩下的代码,那很难说。
答案 1 :(得分:0)
您的AsyncTask
正在后台线程中运行。必须在主(UI)线程上调用显示Toast
或Dialog
。要在AsyncTask
内执行此操作,您可以执行此操作:
您需要AsyncTask
中的活动背景,所以让您的活动创建AsyncTask
,如下所示:
MyAsyncTask task = new MyAsyncTask(this, ...); // pass "this" so AsyncTask has an activity context
在AsyncTask
构造函数中,保存活动上下文,以便以后使用它:
private Activity activity;
// Constructor
MyAsyncTask(Activity activity, ...) {
this.activity = activity;
...
}
当您想要显示Dialog或Toast时,请确保代码在主(UI)线程上运行:
// Here we want to Toast
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
// Do your Toast or Dialog stuff in here
...
}
});