2

Ich habe vor kurzem eine Online-Radio-App gemacht. Ich habe eine Status-Bar-Benachrichtigung als Musik-Player-Benachrichtigung implementiert. Ich lösche die Benachrichtigung mit onDestroy(), aber das Problem ist, dass manchmal onDestroy() nicht aufgerufen wird.Wie kann ich die Benachrichtigung in der Statusleiste löschen, wenn onDestroy() nicht aufgerufen wird?

Wie die Statusleiste Benachrichtigung von der Statusleiste programmgesteuert löschen?

Ich habe den Code gemacht, um die Benachrichtigung zu löschen, also bitte posten Sie diesen Code nicht. Ich möchte wissen, wie Statusleiste Benachrichtigung gelöscht wird, wenn onDestroy() nicht aufgerufen wird. Ich habe alle verwandten StackOverflow-Links dieses Problems ausprobiert. Jede Hilfe wird geschätzt.

+0

Sie tun Möchten Sie die Benachrichtigung zerstören, während Ihre App noch im Vordergrund läuft? –

Antwort

2

Sie haben es falsch verstanden. Sie wollen sich wahrscheinlich überhaupt nicht kümmern onDestroy() (wie es nicht heißt, wenn Sie es denken). Sie wissen, wann Ihre Anwendung die vorderste ist (also keine Benachrichtigung erforderlich ist, da Ihre Aktivität sichtbar ist) oder im Hintergrund ausgeführt wird (Sie benötigen also die Benachrichtigung). Und dafür würde ich Anwendung erweitern verwenden und ActivityLifecycleCallbacks

+1

Ich +1 diese Antwort, weil es wahrscheinlich die Wurzel seines Problems ist. OnDestroy könnte später eine gute Zeit genannt werden. Vielleicht möchtest du stattdessen onStop oder onPause? –

+0

wenn ich Anwendung von den letzten Anwendungen kippe, indem ich nach links oder rechts wische oder alle App von der Schaltfläche lösche, Benachrichtigung immer noch in der Statusleiste, nachdem App geschlossen wurde, so wie die Benachrichtigung von der Statusleiste entfernt wird. –

+0

kann nicht On-Stop oder On-Pause verwenden, da die Benachrichtigung angezeigt wird, wenn das Radio im Hintergrund läuft ... nur die Benachrichtigung wird gelöscht, wenn die App geschlossen wird .... –

-1

verwenden, wenn Sie Notification wie folgt zu erstellen:

NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
Notification.Builder builder = new Notification.Builder(TestActivity.this); 
int NOTIFY_ID = 0; 

     builder 
       .setSmallIcon(R.drawable.some_icon) 
       .setTicker(songTitle) 
       .setOngoing(true) 
       .setContentTitle("Playing") 
       .setContentText(songTitle); 

     notification = builder.build(); 

     notificationManager.notify(NOTIFY_ID, notification); 

Dann können Sie stornieren (löschen), um diese Notification wie folgt aus:

notificationManager.cancel(NOTIFY_ID);