1

プロセスとスレッドに関するガイドに従って、AsyncTaskデータベース アクセスを実行する Android アクティビティを実装しています。ただし、私のコードは で例外を処理する必要がありますdoInBackground

私の現在の考えでは、Toastポップアップを提供してこの例外をユーザーに通知することですが、これも「シングル スレッド モデルの 2 番目のルールに違反しています。UI スレッドの外部から Android UI ツールキットにアクセスしないでください」(ガイドによる)。

トーストポップアップを提供するのは間違っていますか? メソッドで例外を処理するより良い方法はありdoInBackgroundますか?

4

2 に答える 2

5

例外により、処理中のdoInBackground処理が停止しますか?

はいの場合、発生した例外を保存し、終了doInBackgroundしてトーストを表示しますonPostExecute

いいえの場合、例外情報をonProgressUpdatewithに渡しpublishProgressます。

をポップアップしようとしても機能ToastdoInBackgroundません。

于 2013-01-14T06:09:19.780 に答える
0

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();
            }
        });
    }

}

于 2013-01-14T06:14:30.060 に答える