[解決済み] Androidの例外処理のベストプラクティス?
質問
私のアプリがクラッシュした場合、アプリがクラッシュしたので閉じる必要があると Android に言われる前に、数秒間ハングします。そこで、私のアプリのすべての例外を一般でキャッチすることを考えていました。
try {
// ...
} catch(Exception e) {
// ...
}
そして、新しい
Activity
を作成して、アプリケーションが即座にクラッシュしたことを説明します (また、ユーザーにエラーの詳細をメールで送信する機会を与えます)。これを達成するためのより良い方法があるのでしょうか、それともこれは推奨されないのでしょうか?
更新しました。 私は ART を有効にした Nexus 5 を使用していますが、アプリのクラッシュで経験していた遅延 (私が最初に話していた "hanging") に気づいていません。今はすべてがネイティブコードなので、クラッシュはすべてのクラッシュ情報を取得すると同時に即座に発生するのでしょう。Nexus 5 が速いだけかもしれませんが :) ともかく、これは将来の Android のリリースでは心配ないかもしれません (Android L では ART がデフォルトのランタイムになる予定であることを考えると)。
どのように解決するのですか?
ここでは リンクを参照してください。 .
ここでは、以下のようなクラスを作成します。
ExceptionHandler
その
implements java.lang.Thread.UncaughtExceptionHandler
..
このクラスでは、スタックトレースを作成したり、エラーレポートをアップロードするための準備など、命を守るための作業を行います。
さて、ここからが重要なところです。
つまり、その例外をどのように捕えるかです。
とはいえ、とても簡単です。各アクティビティで、オーバーライドのsuperメソッドの呼び出しのすぐ後に、次のコードをコピーしてください。
onCreate
メソッドを呼び出した直後にコピーしてください。
Thread.setDefaultUncaughtExceptionHandler(new ExceptionHandler(this));
あなたのActivityは次のようになります。
public class ForceClose extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Thread.setDefaultUncaughtExceptionHandler(new ExceptionHandler(this));
setContentView(R.layout.main);
}
}
これが役に立つといいのですが...
関連
-
Eclipse の問題 アクセス制限。タイプ 'jfxrt' はAPI解決されていません。
-
Springの設定でxsdファイルのバージョン番号を設定しない方が良い理由
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] Androidでアクティビティ起動時にEditTextにフォーカスが当たらないようにする方法
-
[解決済み] JUnit 4のテストで、ある例外が投げられたことをどのように断言しますか?
-
[解決済み] Androidの「コンテキスト」とは何ですか?
-
[解決済み] EclipseのAndroidプラグインで "Debug certificate expired "エラーが発生する。
-
[解決済み] Node.jsの例外処理のベストプラクティス
-
[解決済み] 新しいAndroid Fragmentをインスタンス化するためのベストプラクティス
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Springの設定でxsdファイルのバージョン番号を設定しない方が良い理由
-
Solve モジュールのビルドに失敗しました。Error: ENOENT: no such file or directory エラー
-
Javaクラスが "Error occurred during initialization of boot layer "というエラーで実行される。
-
ajax コミット リソースの読み込みに失敗しました: サーバーはステータス 400 で応答しました ()
-
名前 'XXX' を持つ Bean の作成に失敗しました。自動依存関係の注入に失敗しました 解決方法
-
-bash: java: コマンドが見つからない 解決方法
-
BindException: アドレスはすでに使用中です:バインドエラー解決
-
代入の左辺は変数でなければならない 解答
-
Java基礎 - マッピングとQ/A
-
[解決済み] アプリのクラッシュを防ぐためのtry/catchの使い方