2

アプリケーションの新しいバージョンをAndroidマーケットにリリースしたばかりですが、新しいバージョンのアクティビティにはGLSurfaceViewが含まれています。特別なことは何もしていませんが、ユーザーベースが大きく、標準以下のAndroidスマートフォンがたくさんあり、GLThread.run()で常に例外が発生しています。

アプリ全体をクラッシュさせることなく、これらの例外をキャッチ/処理するための推奨される方法は何ですか?理想的には、エラーをキャッチし、アクティビティからサーフェスビューを削除して、OpenGLを使用するコンポーネントをオフにできるようにしたいと思います。少し検索しましたが、ほとんどの場合、Android上のFirefoxなどの例外レポートが見つかりました。:)

キャッチされていない例外ハンドラーを使用し、共有設定フラグをfalseに切り替えて、クラッシュさせることを考えています。次の実行では、そのGLSurfaceViewを追加しようとはしません。

4

1 に答える 1

2

私は次のコードで問題を回避することになりました:

final UncaughtExceptionHandler defaultHandler = Thread.getDefaultUncaughtExceptionHandler();

Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler() {
    @Override
    public void uncaughtException(Thread thread, Throwable ex) {
        if (thread.getName().startsWith("GLThread")) {
            disableOpenGLStuff();
        }

        // You could wrap this in an else, but I'm not sure how good of an idea it is to leave the application running when a thread has crashed.
        defaultHandler.uncaughtException(thread, ex);
    });
于 2012-10-08T22:12:39.010 に答える