2012-05-10 13 views
1

私はI/Oを実行するクラス(ABC)を持っています。 FileOutputStream.closeのようなものでは、try catchブロックを使用します。さらに、私は、自分と自分が何が起こっているかを知るのに役立つ、自分の投げられるオブジェクトを作成しました。AndroidスレッドとThrowable

このクラスでは、このクラスを作成するアクティビティのコンテキストで渡して、スロー可能なテキストでダイアログボックスを作成して警告するようにしました。

私はこのクラスを新しいスレッドから実行する必要がありますが、スローテーブルのテキストから情報を取得する必要があります。

たとえば、これは私のクラスで典型的なcatch節のように見えます。

new AlertDialog.Builder(myContext) 
         .setTitle("Error Message") 
         .setMessage(
           "Error Code: #006" + "\n" + T.toString()) 
         .setNeutralButton("OK", 
           new DialogInterface.OnClickListener() { 

            @Override 
            public void onClick(
              DialogInterface dialog, 
              int which) { 
             // TODO: Add Ability to Email 
             // Developer 

            } 
           }).show(); 

は、私はちょうど警告ダイアログの代わりにABCクラスの内部

throw new Throwable(throwable); 

このような何かをしますか?私はRunnableインターフェイスの実行メソッドが呼び出されるtryキャッチ、または非同期タスクのバックグラウンドでdoを呼び出しダイアログに移動しますか?

答えて

2

JavaのThread.UncaughtExceptionHandlerを使用すると、テキストを保存してダイアログを表示できます。ですから、このようなのThread.UncaughtExceptionHandlerを拡張する新しいクラス、になるだろう:

foo = new DataTargetClass(); 
Thread t = new Thread(myIoRunnable(foo)); 
t.setUncaughtExceptionHandler(new myThreadExceptionHandler(foo)); 
t.start(); 
:スレッドを開始しているあなたのコードで

public class myThreadExceptionHandler implements Thread.UncaughtExceptionHandler 
{ 
    private DataTargetClass dataTarget; 
    public myThreadExceptionHandler(DataTargetClass c) 
    { 
     dataTarget = c; 
    } 
    public void uncaughtException(Thread t, Throwable e) 
    { 
     dataTarget.exceptionObject = e; 
     dataTarget.onException(); 
     // Just substitute in whatever method your thread uses to return information. 
    } 
} 

を、あなたはこれを行うだろう

関連する問題