Activity-Wechsel bitte ohne Notification

G

Gast2

Gast
Hallo,

Ich habe eine Notification erstellt, mit der ich die App zurückholen kann, wenn diese in den Hintergrund tritt.
(Z.B. beim Betätigen des Home-Buttons)

Leider wird diese Notification auch beim Wechsel der Activitys innerhalb der App, also innerhalb des Packages erzeugt. So hab ich mir das nicht gedacht. Leider konnte ich bis dato nicht herausfinden, wie ich das vermeide. Ich suchte zB. vergeblich nach einer Abfrage, ob das Package noch im Vordergrund ist.

Wie kann ich mitteilen, dass die Notfication nur beim Ausblenden der App erstellt wird und nicht beim Wechsel der Activity?

Java:
	@Override
	public void onPause(){
		super.onPause();		
		releaseNotification();
	}
	/**
	 * notification at the notification bar 
	 */
	private void releaseNotification(){
		NotificationCompat.Builder mBuilder =
		        new NotificationCompat.Builder(this)
		        .setSmallIcon(R.drawable.logo)
		        .setContentTitle("meine App")
		        .setContentText("hallo!")
		        .setAutoCancel(true);
		Intent resultIntent = new Intent(this, MainActivity.class);
		TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
		stackBuilder.addParentStack(MainActivity.class);
		stackBuilder.addNextIntent(resultIntent);
		PendingIntent resultPendingIntent =
		        stackBuilder.getPendingIntent(
		            0,
		            PendingIntent.FLAG_UPDATE_CURRENT
		        );
		mBuilder.setContentIntent(resultPendingIntent);
		NotificationManager mNotificationManager =
		    (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
		mNotificationManager.notify(0, mBuilder.build());
	}
 

Michael...

Top Contributor
Obwohl die Beschreibung in Activity | Android Developers gut auf mein Problem passt?!
? Ich lese da was anderes.
Hier steht, dass sich diese Methode ebenfalls auf die Activity bezieht und - im Falle, dass der Anwender aktiv die Activity "verlässt" - diese unmittelbar vor der onPause() aufgerufen wird. Die Methode hilft als nur zur Unterscheidung, ob das Pausieren durch den Anwender oder irgendeinen Systemprozess ausgelöst wird.
Folgendes hört sich so an, als könnte es weiter helfen:
Application’s Pause/Resume Sriram Ramani
 
G

Gast2

Gast
Danke für den Link.

Ich habe den Code getestet, aber sobald das Package nicht mehr oben drauf liegt, reagiert dieser Code nicht mehr und genau das ist das was ich bräuchte. Ich hätte die Notication aufgerufen, sobald die App (das Package) nicht mehr oben liegt (die sichtbare Oberfläche stellt).

Schade, vom Ansatz fand ich den Code gut (wenn auch aufwendig).
Und wer diesen Pfad evtl. mal folgen mag, hier meine Beobachtungen:
ArrayList<ApplicationLifecycleCallbacks> mListeners wird nie gefüllt,
addApplicationLifecycleCallbacks wird nie aufgerufen.
Ich vermute dass hier die Ursache liegen könnte,
aber bei mir hört hier das Verständnis für diesen Code vorerst auf.

Also: Ich suche weiter nach einer richtigen Möglichkeit!
 
Zuletzt bearbeitet von einem Moderator:

schlingel

Gesperrter Benutzer
Folgender Vorschlag. Möglicherweise ein bisserl Overkill, könnte aber funktionieren:

Du verwendest einen Service um die Notifications zu feuern. (LocalService)
Wird eine Activity angezeigt (onResume), schickst du dem Service eine Nachricht. ACTIVITY_ON oder sowas.
Wird eine Activity in den Hintergrund geschickt (onPause), schickst du dem Service eine Nachricht. ACTIVITY_OFF z.B.

Der Service zählt mit. ACTIVITY_ON ++, ACTIVITY_OFF --, erreichst du 0 wartest du ca. 500ms ob nicht noch eine Nachricht daherkommt. Kommt keine zeigst du die Notification an, kommt eine dann eben nicht.

Vorteil: Notifications-Code anzeigen ist zentral.
Nachteil: Eine jede deiner Activities muss Nachrichten broadcasten.

PS: Der oben verlinkte Beitrag läuft darauf hinaus, dass du das so ähnlich machst wie mit dem Service nur dass du anstatt des Services eine statische Klasse verwendest. Zufällig ist die dann auch eine Application.
 
Zuletzt bearbeitet:

Michael...

Top Contributor
Ein Service war auch mein erster Gedanke, dann bin ich bei der Internet Recherche auf diesen Artikel gestossen.
Ist zwar nicht genau das was Du vorhast, aber die Idee mit der eigenen Applicationen und den Activities basierend auf einer eigenen Basis Activitiy fand ich ganz gut. Dadurch bekommst Du ja in der Application mit wenn eine Activity pausiert und in den Hintergrund geschickt wird. In Kombination mit dem Vorschlag von schlingel kurz zu warten und dann zu prüfen, ob nicht doch noch eine Actitivity wieder fortgesetzt wurde, ist das scheinbar machbar - zumindest hat es bei einem quick & dirty Test meinerseits scheinbar wie gewünscht funktioniert.

Schade, vom Ansatz fand ich den Code gut (wenn auch aufwendig).
Und wer diesen Pfad evtl. mal folgen mag, hier meine Beobachtungen:
ArrayList<ApplicationLifecycleCallbacks> mListeners wird nie gefüllt,
addApplicationLifecycleCallbacks wird nie aufgerufen.
Ich vermute dass hier die Ursache liegen könnte,
aber bei mir hört hier das Verständnis für diesen Code vorerst auf.
Diese Listener Geschichte ist nur dafür gedacht, falls "jemand" von aussen mitbekommen will, wenn Activities pausiert oder fortgesetzt werden. Ist für Deinen Zweck aber irrelevant und kann entfernt werden.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
W JSONARRAY per Intent an andere Activity übergeben und umwandeln ggbf. Android & Cross-Platform Mobile Apps 1
M Activity einer anderen App mit result Android & Cross-Platform Mobile Apps 2
CT9288 Methode von Fragment durch Activity rufen scheitert Android & Cross-Platform Mobile Apps 7
ruutaiokwu Android Daten von "Activity A" nach "Activity B" umleiten? Android & Cross-Platform Mobile Apps 13
L Android Lockscreen-Sperrmuster activity verwenden Android & Cross-Platform Mobile Apps 1
J Android App stürzt ab wenn neue activity gestartet Android & Cross-Platform Mobile Apps 6
D Android Activity wechseln per Button Android & Cross-Platform Mobile Apps 3
P Android Android-App Crash - Unable to start activity ComponentInfo Android & Cross-Platform Mobile Apps 2
S Neue Activity lässt sich nicht starten Android & Cross-Platform Mobile Apps 28
B Android Activity nach gedrückte Returntaste weiterlaufen lassen Android & Cross-Platform Mobile Apps 2
J Probleme mit ViewPager und Activity Android & Cross-Platform Mobile Apps 1
B Android In einem View der ersten Activity zweite anzeigen Android & Cross-Platform Mobile Apps 2
G Accelerometer ohne Activity Android & Cross-Platform Mobile Apps 8
J Android BroadcastHandler extends BroadcastReceiver; auf Activity zugreifen? Android & Cross-Platform Mobile Apps 5
K Android Übergeordnete Activity herausfinden? Android & Cross-Platform Mobile Apps 7
W Android Designfrage / Layout / Activity / Fragments Android & Cross-Platform Mobile Apps 2
B Login Activity Android & Cross-Platform Mobile Apps 1
M Android Suche Activity/View Namen Android & Cross-Platform Mobile Apps 1
K Unbekannte Menge von Daten (Strings oder Ints) an Activity übergeben Android & Cross-Platform Mobile Apps 0
M Fehler ohne Sinn? java.lang.RuntimeException: Unable to start activity ComponentInfo Android & Cross-Platform Mobile Apps 11
S Android Eclipse erstellt keine main Activity Android & Cross-Platform Mobile Apps 4
B java.lang.RuntimeException: Unable to start activity ComponentInfo Android & Cross-Platform Mobile Apps 2
K Android Activity for result aus Dialog Android & Cross-Platform Mobile Apps 1
S Android "Weiches wechseln" zwischen Views in einer Activity Android & Cross-Platform Mobile Apps 3
D Android Activity mit mehreren Views "spliten" Android & Cross-Platform Mobile Apps 10
G eine Methode einer anderen Activity aufrufen Android & Cross-Platform Mobile Apps 9
D Android Neue Activity im TabWidget laden Android & Cross-Platform Mobile Apps 8
S Android In Service überprüfen ob eine Activity gebunden ist? Android & Cross-Platform Mobile Apps 6
T Android Activity finished testen Android & Cross-Platform Mobile Apps 5
T Activity / Application fundamentals Android & Cross-Platform Mobile Apps 4
M Activity wechseln aus List View mit Android & Cross-Platform Mobile Apps 2
G extends Activity für Berechnungen? Android & Cross-Platform Mobile Apps 7
G Daten von einer Activity zur nächsten übergeben Android & Cross-Platform Mobile Apps 6
G selbes Menü auf jeder Activity Android & Cross-Platform Mobile Apps 4
C Activity ohne Aktion starten Android & Cross-Platform Mobile Apps 8
C Android Kommunikation zwischen Service und Activity Android & Cross-Platform Mobile Apps 8
Maxim6394 [ Android ] Activity ändern Android & Cross-Platform Mobile Apps 9
A Activity Intent 'source not found' Android & Cross-Platform Mobile Apps 4
A Android Activity Variablen-Initialisierung Android & Cross-Platform Mobile Apps 8
A Beenden einer 2ten Activity Android & Cross-Platform Mobile Apps 3
W Standard Gallery Activity? Android & Cross-Platform Mobile Apps 22
schlingel Android: Overlay in Activity Android & Cross-Platform Mobile Apps 3
G Activity beenden Android & Cross-Platform Mobile Apps 2
T App Absturz bei Wechsel von WLAN zu mobilem Internet bzw. andersrum Android & Cross-Platform Mobile Apps 5
S Themen Wechsel Android & Cross-Platform Mobile Apps 3
M Android Kotlin: Bitte dringend um Hilfe Android & Cross-Platform Mobile Apps 2
Mo1234 Plattform in einer App. Bitte um Hilfe! Android & Cross-Platform Mobile Apps 8
thE_29 Vor dem ersten Posten bitte lesen! Android & Cross-Platform Mobile Apps 0

Ähnliche Java Themen

Neue Themen


Oben