Gibt es eine Möglichkeit zu wissen, ob der Onresume einer Aktivität aufgerufen wird, weil "Zurück-Schaltfläche" oder wenn aufgerufen wird, weil die interne Anwendung im Hintergrund war? Ich muss diese verschiedenen Aktionen protokollieren:/ Dies ist das Szenario: Ich habe 4 Aktivitäten A-B-C-D; Ich brauche die Navigation zwischen Aktivität zu protokollieren und ich will nicht die onResume durch Anwendung wake von Hintergrund verursacht loggt :)Protokollieren Sie, warum die Aktivität wieder aufgenommen wird
Antwort
Von Activity A, wenn Sie die Aktivität B/C/D starten, verwenden und Bezeichner und starten Sie die Aktivität für das Ergebnis.
Zum Beispiel:
int ActivityBID = 1;
Intent i = new Intent(this, ActivityB.class);
startActivityForResult(i, ActivityBID);
in Ihrer Tätigkeit B außer Kraft setzen Sie die onBackPressed
:
@Override
public void onBackPressed() {
Intent intent = new Intent();
intent.putExtra("activity","B")
setResult(RESULT_OK, intent);
finish();
}
und Unterstützung für eine Aktivität:
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == ActivityBID) {
if(resultCode == RESULT_OK){
String stredittext=data.getStringExtra("activity");
}
}
}
Hinweis: Die innere wenn und die Variable ist nicht notwendig, weil Sie bereits wissen, aus welcher Aktivität Sie stammen, aber ich denke, y Vielleicht möchten Sie einige Daten in dieser Rücksendung weitergeben, also gehe ich dann.
bearbeiten Bild der ActivityForResult
können Sie zum Beispiel überschreiben die onBackPressed()
Rückruf
@Override
public void onBackPressed() {
super.onBackPressed();
/* add your log here */
}
Sammeln Sie das Protokoll von onResume()
plus die (falls vorhanden) von onBackPressed()
dann können Sie die verschiedenen Szenarien erkennen.
Ich habe 4 Aktivitäten A-B-C-D; Ich muss die Navigation zwischen Aktivität protokollieren und ich möchte nicht die Onresume protokollieren, die durch Anwendung verursacht wird, die vom Hintergrund aufwacht :) – aeroxr1
exemplifizieren Wenn ein Activity
pausiert, wird onPause()
genannt. In onPause()
schreiben Sie den Namen der Activity
, die in eine globale static
Variable pausiert wird.
Wenn ein Activity
wieder aufgenommen wird, wird onResume()
aufgerufen. Überprüfen Sie unter onResume
, ob die globale Variable static
den Namen Activity
enthält. Wenn dies der Fall ist, können Sie die Protokolle weglassen, da Activity
gerade pausiert/wieder aufgenommen wurde.
Auf diese Weise haben ein kleines Problem. Wenn die Navigation A-B-A-C ist, schreiben Sie nur A-B-C. – aeroxr1
Nein. Wenn ich von B nach A zurückkehre, wird 'B.onPause()' aufgerufen (schreibt "B" in das Globale), dann wird 'A.onResume()' aufgerufen (wird sehen, dass das Globale nicht "A" ist) ", so wird es" A "protokollieren. Hast du es tatsächlich versucht? –
Morgen werde ich versuchen, scheint aber richtig :) – aeroxr1
- 1. Null Daten wieder aufgenommen Aktivität
- 2. Android TabLayout wird nicht richtig ausgerichtet, sobald die Aktivität wieder aufgenommen wird
- 3. UIView Animation, wenn app wieder aufgenommen wird
- 4. Android: Etwas tun, wenn App wieder aufgenommen wird
- 5. Warum wird ein onready-Ereignis ausgelöst, wenn meine cordova/phonegap-App von einer Plugin-Aktivität wieder aufgenommen wird?
- 6. Musik wird nicht wieder aufgenommen, von wo es geschlossen wurde
- 7. Protokollieren Sie die Aktivität einer Anwendung, wenn sie erstellt und mit Visual Studio C++ getestet wird.
- 8. Fragment, das im Backstack nicht am höchsten ist, wird wieder aufgenommen
- 9. ViewPager Fragmente Erholung, sind wieder aufgenommen, aber nicht sichtbar
- 10. Wie wird die Webcam-Aufnahme aufgenommen?
- 11. Fragment wieder nicht mit ihrer Aktivität nach Absicht mit
- 12. Warum wird mein Iterator wieder vorgerückt?
- 13. Warum wird ein Graph in DirectShow nicht aufgenommen?
- 14. Warum wird mein Anzeigeblock nicht wieder angezeigt?
- 15. neue Aktivität von BroadcastReceiver wird fortgesetzt existierte Aktivität
- 16. Absicht zu MainActivity startet die aktuelle Aktivität wieder
- 17. Webseite wird wieder und wieder
- 18. Gleicher Speicherplatz wird wieder zugewiesen & wieder
- 19. IndexOutOfBoundsException in FragmentManager, wenn die Aktivität wieder aufzunehmen
- 20. eine Aktivität beenden, die wieder im Stack ist
- 21. Wie wird der Stack wieder zur Root-Aktivität zurückgesetzt, wenn der Benutzer die Anwendung verlässt?
- 22. So protokollieren Sie die IIS-Serverleistung
- 23. Warum wird die erste aufgerufene Aktivität nicht ausgeführt?
- 24. wie gleiche Aktivität reload verhindern wieder
- 25. durchsuchbare Die Aktivität wird nicht
- 26. Scala-Play: Warum werden die Standardwerte des Formulars nicht aufgenommen?
- 27. Wie kann man feststellen, wenn der Controller vom Hintergrund aus wieder aufgenommen wurde?
- 28. HAProxy wird nur Startmeldung protokollieren
- 29. Aktivität, die einmal ausgeführt wird, kommt nicht wieder, wenn Benutzer diese App schließt
- 30. Wie wird der Bildschirm nach einem bestimmten Zeitschlitz aufgenommen?
Auf diese Art schreibe ich nur das Protokoll, wenn auf zurückgedrücktem Ereignis auftritt? Zum Beispiel: A-B-C-B mit dieser Methode werde ich nur B schreiben, wenn der Benutzer die App ohne Rückkehr zum A schließen? – aeroxr1
Auf diese Weise können Sie sich im 'onActivityResult' anmelden, so dass der Code nur dann gesendet wird, wenn die Absicht ein ActivityResult hat. Wenn Sie die APP schließen, tritt dies nicht auf. Sie können andere Variablen wie ActivityBID erstellen, um die Aktivität zu identifizieren, aus der die Ergebnisse stammen. –
Aber in Ihrem Code wird das Setresult nur aufgerufen, wenn der Benutzer die Zurück-Taste drückt? – aeroxr1