2016-12-10 7 views
0

多くの理由によりクラッシュする可能性があるアプリケーションがあります。私が欲しいのは、アプリケーションがクラッシュしたときに、それはすべての関連の通知を削除するべきであるということです。Androidアプリがクラッシュしたときにすべての通知を消去

public class CrashHandler implements UncaughtExceptionHandler { 

    private UncaughtExceptionHandler defaultUEH; 
    private NotificationManager notificationManager; 

    public CrashHandler(Context context) { 
     this.defaultUEH = Thread.getDefaultUncaughtExceptionHandler(); 
     notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 
    } 

    public void uncaughtException(Thread t, Throwable e) { 

     if (notificationManager != null) { 
      try { 
       notificationManager.cancelAll(); 

      } catch (Throwable ex) { 
       ex.printStackTrace(); 
      } 
     } 

     notificationManager = null; 
     defaultUEH.uncaughtException(t, e); 
    } 
} 

と私のメインの活動では、私は上記のクラスと呼ばれる:

new CrashHandler(context); 

をしかし、私は、アプリケーションとアプリケーションを実行するときクラッシュすると通知は削除されません!何か案が?

+0

クラッシュに身を委ねるのではなく、あなたが震えるのを見てください**なぜ**クラッシュするのですか?アプリがクラッシュした場合、ほとんどの場合、メソッドを実行する機会はありません。クラッシュした場合、突然終了します。私はサービスを登録して、サービスonDestroy()のメソッドを実行することによっていくつかのトリックを行うことができるいくつかのことについてお読みください。しかし、それが本当に役立つなら、私は決してテストしていません。 – Opiatefuchs

答えて

0

アプリケーションクラスでは、次のようにsetDefaultUncaughtExceptionHandlerが必要です。

public class MyApplication extends Application { 

    @Override 
    public void onCreate() { 
     // Set your custom UncaughtExceptionHandler 
     Thread.setDefaultUncaughtExceptionHandler(new CrashHandler()); 

     super.onCreate(); 
    } 
} 

AndroidMenifest.xmlファイルでは、name属性にApplicationクラスを設定します。その後

<application 
    android:name=".MyApplication" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppBaseTheme"> 

あなたのアプリがキャッチされない例外によりにクラッシュする際にアプリがクラッシュする前に、uncaughtException(Thread t, Throwable e)方法は、あなたのCrashHandlerクラスで呼び出されます。

+0

返信いただきありがとうございます!私はそれをチェックし、あなたに知らせる – Shoaib

関連する問題