如何在异步任务中获取异常时在主线程上发布异常

时间:2013-08-25 16:27:19

标签: android multithreading http android-asynctask

我有一个异步任务进入数据库并获取数据。偶尔,数据库连接丢失,当我进入异步任务并且应用程序崩溃时,我遇到了异常。 我的问题是有一种方法来捕获连接失去异常,而我在异步线程中并向用户发布一条消息,表明连接丢失并阻止我的应用程序崩溃。 在此先感谢您的帮助。 亚历

2 个答案:

答案 0 :(得分:1)

第1步:将Exception存储在AsyncTask的数据成员中,当您在doInBackground()中找到它时

步骤2:在onPostExecute()中,如果您在该数据成员中存储了Exception,请对其执行某些操作(例如display a crouton)。

答案 1 :(得分:0)

您可以按照以下方式执行此操作:

private class GetData extends AsyncTask<String, Void, String> 
    {

    @Override
        protected String doInBackground(String... params) 
            {
                         try{
                                      //Access DB here
                                      return "Success";
                                    }
                                 catch(Exception e)
                                   { 
                                     return "Exception"
                                     }
            }

    @Override
    protected void onPreExecute() 
        {

        }

    @Override
    protected void onPostExecute(String result)
        {
            if (result.equalsIgnoreCase("Success")) 
                {
                    //Do your operation
                }
            else if (result.equalsIgnoreCase("Exception"))
                {
                    //Display Exception here
                }
            }

    }