2017-08-28 7 views
0

UncaughtExceptionHandlerを設定しています。そのため、アプリがクラッシュしたときにスタックトレースをディスクに書き出すことができます。 CustomExceptionHandlerUncaughtExceptionHandlerを実装UncaughtExceptionHandlerはアプリケーションをワイドに設定していますか?

if (!(Thread.getDefaultUncaughtExceptionHandler() instanceof CustomExceptionHandler)) { 
     exceptionHandler = new CustomExceptionHandler(
       Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).toString(), 
       null, this); 

    Thread.setDefaultUncaughtExceptionHandler(exceptionHandler); 
} 

:私はこのような、このハンドラを設定します。私はActivityのインスタンスを保持していますので、他の機能(スタックトレースの削除、取得など)に使用できます。

私はonCreateのコードを上記のActivityと呼んでいますが、初めてActivityが実行されたときだけ起動するようです。

私はThread.setDefaultUncaughtExceptionHandlerコールが静的であることがわかりますが、それは私のアプリケーションで一度しかそのハンドラを設定できないということですか?またはスレッドごとに設定できますか?

答えて

0

ドキュメント

* Sets the default uncaught exception handler. This handler is invoked in 
* case any Thread dies due to an unhandled exception. 

うんから、このハンドラはグローバルであり、あなたはアプリ

0

ごとに一度、それを設定する必要があるたuncaughtExceptionHandlerは幅広いアプリケーションに設定されていますか?

はい。それをアクティビティに設定してアクティビティが破棄された場合、そのアクティビティ内のハンドラコードはもう存在しない可能性があります。

(アクティビティではなく)Application-onCreateにハンドラを設定しているため、クラッシュログを書き込むためにアプリケーションに属するすべてのアクティビティで機能します。詳細に関してはHow to change crash message in android(if possible)

Here

は、エントリがファイルに書き込まれますlogcat私crashloggerためのGPL-V3 +コードです。これは、定数Global.LOG_CONTEXTこの

public class AndroFotoFinderApp extends Application { 
    private LogCat mCrashSaveToFile = null; 

    @Override public void onCreate() { 
     super.onCreate(); 

     mCrashSaveToFile = new LogCat(this, Global.LOG_CONTEXT, HugeImageLoader.LOG_TAG, 
       PhotoViewAttacher.LOG_TAG, CupcakeGestureDetector.LOG_TAG, 
       FotoLibGlobal.LOG_TAG, ThumbNailUtils.LOG_TAG, IMapView.LOGTAG, 
       ExifInterface.LOG_TAG, ImageMetaReader.LOG_TAG); 
    } 
} 

HugeImageLoader.LOG_TAGようApplication.onCreateに初期化され

、... はこの

Log.d(HugeImageLoader.LOG_TAG, "some log message from modul HugeImageLoader) 
のように私のコード使用の異なるmodulsのアンドロイド伐採タグです
関連する問題