Android,在异常时弹出一条消息

时间:2014-11-02 15:08:53

标签: android exception

我有一个连接到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

2 个答案:

答案 0 :(得分:0)

你可以设置一个布尔值并在函数调用后读取它,此时你应该能够显示一个toast / dialog。但如果没有剩下的代码,那很难说。

答案 1 :(得分:0)

您的AsyncTask正在后台线程中运行。必须在主(UI)线程上调用显示ToastDialog。要在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
            ...        
        }
 });