2017-05-29 12 views
0

私のアプリを強制終了しても通知が消えないすなわち、マルチタスクウィンドウを開いてそれをスワイプすると、私の永続的な通知は消えません。私のアプリを強制終了しても通知が消えない

これは私の通知populateメソッドです:

public void populateNotification(Boolean bool) { 
    int notifyID = 1; 
    notificationBuilder = new NotificationCompat.Builder(MainActivity.this); 
    notificationBuilder.setSmallIcon(R.mipmap.ic_launcher_round); 
    notificationBuilder.setContentText("Set Content Text"); 
    notificationBuilder.setContentTitle("Set Content Title"); 
    notificationManager = (NotificationManager) getBaseContext().getApplicationContext().getSystemService(NOTIFICATION_SERVICE); 
    if (bool) { 
     notificationManager.notify(notifyID, notificationBuilder.build()); 
    } else { 
     notificationManager.cancel(notifyID); 
    } 

これは私のonDestroy方法であって、基本的に

` 
public void onDestroy() { 
     if (cameraAPIself != null) { 
      cameraAPIself.destroyCamera(); 
     } 
     if (cameraAPI2self != null) { 
      cameraAPI2self.destroyCamera(); 
     } 
     populateNotification(false); 
     super.onDestroy(); 
    }` 

何私のアプリが行うことはフラッシュがONのときには通知を示しています。しかし、私は強制的に私のアプリを閉じる。フラッシュがオンになっているとき(通知が入力されるとき)、アプリケーションはもはやアクティブではないので、通知の必要がないので、通知は消えない。誰も私をここで案内することはできますか?

答えて

0

onDestroy()を呼び出すことは必ずしも機能しません。

onDestroyは常に呼び出されるとは限りません(here参照)。

(「優先度の高いアプリがメモリが必要な場合アプリケーション・プロセスが殺された」)

また、Activity Lifecycle上のドキュメントはonDestroy方法については、これを言っている:

システムの状況があります。アクティビティの ホスティングプロセスをこのメソッド(または他のもの)を呼び出すことなく単に終了させるため、 プロセスが終了したあとに の周囲に残ることを意図した操作を行うべきではありません。

使用したサービス

だからあなたは、そのサービスであなたは、onTaskRemoved()メソッドをオーバーライド(粘着性がない)、あなたは上でキャンセルを呼び出すという方法でサービスを作成されて何ができるか、あなたのお知らせ。

これは、ドキュメントを約onTaskRemoved述べ何である - これは、サービスが現在実行されている場合に呼び出され、ユーザーがサービスのアプリケーションから来ているタスクを 取り除いた

を。

+0

ありがとうたくさんの男、魅力のように動作します:) –

+0

あなたは大歓迎です:) –

関連する問題