处理AsyncTask中的异常.doInBackground在Activity中



我遵循进程和线程指南,在android活动中实现AsyncTask,我将在其中执行一些数据库访问。但是,我的代码必须处理doInBackground中的异常。

我目前的想法是提供一个Toast弹出通知用户这个异常,但现在我担心这也"违反了单线程模型的第二条规则:不要从UI线程外部访问Android UI工具包"(按照指南)。

我提供Toast弹出框是错的吗?是否有更好的方法来处理doInBackground方法中的异常?

异常会导致您停止doInBackground正在处理的内容吗?

如果是,存储您遇到的异常,退出doInBackground并在onPostExecute中显示Toast

如果不存在,则通过publishProgress传递异常信息给onProgressUpdate

尝试在doInBackground中弹出Toast将不起作用

你可以使用runOnUIThread从后台线程更新UI

  @Override
  protected void doInBackground(Void... params) {
   try{
        // do some stuff
    }catch(Exception ex){
    ex.printStackTrace();
    final String message = ex.getMessage();
        yourActivity.runOnUiThread(new Runnable() {
            public void run() {
               // show toast
                Toast.makeText(getApplicationContext, message, Toast.LENGTH_SHORT).show();
            }
        });
    }

}

相关内容

  • 没有找到相关文章

最新更新