geht Hey ich habe eine Anwendung, wo ich jetzt möchte, wenn die APP onPause oder onDestroy geht, weil ich eine bestimmte Funktion aufrufen möchte, wenn dies passiert. Ich habe versucht, die onPause in einer Aktivität zu überschreiben und diese Aktivität in allen Projekten erweitert, aber die onPause wurde bei jeder Migration zwischen Aktivitäten aufgerufen (was logisch ist), aber das ist nicht was ich will. Ich möchte wissen, wenn der Benutzer die App beendet oder unterbricht es Grüße (die Home-Taste drücken),Wie zu erkennen, wenn die App zu minimieren oder
Antwort
Wenn der Benutzer die Anwendung beendet die onDestroy() Rückruf aufgerufen wird, wenn der Benutzer die Home-Taste die drückt onStop() Callback wird aufgerufen.
Was ist, wenn ich eine andere Aktivität andere die eine diese beiden implementiert wurde –
Sie können eine Basisaktivität erstellen und alle Ihre Aktivitäten werden erben von diesem und so können Sie die Callbacks von jeder Aktivität erkennen. –
Es ist so einfach.
Sie können einfach überprüfen, indem Sie wie unten ein String-Variable unter:
static String active = "false";
**Thing to do :**
if (active.equals("pause")) {
//do your pause task
}
@Override
public void onPause() {
super.onStart();
active = "pause";
}
@Override
public void onStart() {
super.onStart();
active = "start";
}
@Override
public void onDestroy() {
super.onStart();
active = "destroy";
}
das String-Variable Durch die Überprüfung, können Sie machen es möglich.
Er fragt nach dem Status, wenn die gesamte Anwendung pausiert. Aber wenn Sie eine statische Zeichenfolge in die Aktivität überprüfen, wird dies nicht funktionieren, da onPause aufgerufen wird, wenn Sie eine neue Aktivität zu öffnen – Radon8472
in alle Ihre Aktivitäten:
@Override
protected void onUserLeaveHint() {
super.onUserLeaveHint();
Log.e("TAG", "Activity Minimized");
}
in Ihrer Haupttätigkeit:
@Override
public void onBackPressed() {
Log.e("TAG", "App Exit");
super.onBackPressed();
}
note: es gibt keine Möglichkeit, wenn App mit Aufgabe von System (zum Beispiel verlassen getötet zu erkennen Manager)
Aktivität A => startet Aktivität B ... nicht von diesen würde aufgerufen werden ... aber Aktivität A wäre "minimiert" – Selvin
@Selvin lesen Sie Frage sorgfältig, –
ja, ich lese ... aber es scheint, dass Sie nicht wissen, die Aktivität/Application Lifecycle ... App kann in der zweiten Aktivität dann "App Exit" getötet werden nie angerufen und App ist tot ... Die einzige Antwort ist "es gibt kein Konzept der App in Android beenden" – Selvin
So wollen Sie wissen, wann die ganze Anwendung in Bacground geht, die Methode von Activity.onPause sagt Ihnen wann Die Eindeutigkeit geht in den Hintergrund.
Für Ihre Bedürfnisse könnten Sie
auf Ihrem Android-Manifest hinzufügen. Dies ruft eine Klasse wie diese mit dem Namen "YourApplication"
z. für "onCreate" oder "onTerminate" der gesamten App (nicht für jede einzelne Aktivität). Aber Java-Dokumentation sagen, dass Sie nicht darauf vertrauen sollten, dass onTerminate auf jeder App aufgerufen wird zerstören (siehe: android.app.Application subclass, onTerminate is not being called).
Ich denke, dass der beste Weg ist, wenn Sie
- eine eigene Methode „onPause“ hinzufügen und „onResume“, um Ihre Anwendungsklasse
- in alle Ihre Aktivitäten Sie Application-Klasse speichern in, wenn onPause oder onResume heißt
- und Sie rufen Sie eigene Application.onPause, wenn Sie alle Aktivitäten in "onPause"
- sind und Sie Anwendung nennen.onResume wenn erste Aktivität ist zurück in „onResume“
'OnTerminate' nie genannt –
Als versuchen der zweite Teil meiner Lösung. – Radon8472
ich diese Methode verwenden, um festzustellen, ob die App in den Hintergrund geht oder getötet wird
Schritt 1: einen Service Stellen wie diese
public class OnClearFromRecentService extends Service {
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.d("ClearFromRecentService", "Service Started");
return START_NOT_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
Log.d("ClearFromRecentService", "Service Destroyed");
}
@Override
public void onTaskRemoved(Intent rootIntent) {
Log.e("ClearFromRecentService", "END");
//Code here
stopSelf();
} }
Schritt 2) registrieren, diesen Dienst in manifest.xml
<service android:name="com.example.OnClearFromRecentService" android:stopWithTask="false" />
Schritt 3) Starten Sie dann diesen Dienst auf dem Splash-Aktivität
startService(new Intent(getBaseContext(), OnClearFromRecentService.class));
So jetzt, wenn Ihre App manuell getötet wird, wird die onDestroy Methode
aufgerufen werden Versuchen Sie dies auf Ihrem Code und lassen Sie mich wissen, wenn es funktioniert. Glücklich Coding :)
Implement
Application.ActivityLifecycleCallbacks
in Ihrer Anwendungsklasse. Es wird folgende ActivityLifeCycle Methoden implementieren:
isActivityVisible()
onActivityCreated()
onActivityStarted()
onActivityResumed()
onActivityPaused()
onActivityStopped()
onActivitySaveInstanceState()
onActivityDestroyed()
und registrieren Sie den Callback-Hörer in OnCreate() der Anwendungsklasse wie:
registerActivityLifecycleCallbacks(this);
eine globale Variable in Anwendungsklasse definieren.
private static boolean isActive;
Nun ist die Aktivität Lebenszyklus überschriebene Methode wie folgt ändern:
public static boolean isActivityVisible() {
return isActive;
}
@Override
public void onActivityCreated(Activity activity, Bundle bundle) {
}
@Override
public void onActivityStarted(Activity activity) {
}
@Override
public void onActivityResumed(Activity activity) {
isActive = true;
}
@Override
public void onActivityPaused(Activity activity) {
isActive = false;
}
@Override
public void onActivityStopped(Activity activity) {
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle bundle) {
}
@Override
public void onActivityDestroyed(Activity activity) {
isActive = false;
}
und Sie können die erforderlichen Operationen auf den Wert der isActive Variable auszuführen.
- 1. Wie zu erkennen, wenn Text
- 2. Wie zu erkennen Browser minimieren und maximieren Zustand in Javascript
- 3. Erkennen, wenn eine andere App versucht, die Kamera zu verwenden
- 4. Wie zu minimieren, wenn zu einem ist in C#
- 5. wie zu minimieren jinternframe oben
- 6. Div Verstecken, wenn das Browserfenster zu minimieren
- 7. Wie ASPX-Seiten zu minimieren
- 8. Wie JS in PHP leicht zu minimieren ... Oder etwas anderes
- 9. Wie Programmfenster programmatisch auf UWP zu minimieren
- 10. Wie Überlauf zu erkennen
- 11. Wie zu erkennen, wenn Return in UITextField
- 12. RegEx zu minimieren CSS
- 13. android wenn ich app minimieren es zerstört?
- 14. Wie Dateien im asp.net-Core zu minimieren?
- 15. Wie Dienste in Ubuntu zu minimieren
- 16. wie eine Ruby-Datei zu minimieren
- 17. Wie winklig Code für die Produktion zu minimieren?
- 18. Wie Leerzeichen um Baidus Echarts zu minimieren
- 19. Scipy.optimize minimieren dauert zu lange
- 20. vermeiden zu minimieren, wenn das Modell bewerten ist tensorflow
- 21. Parameter Estimation zu Laufzeit minimieren
- 22. Wie zu optimieren (minimieren) jQuery AJAX Anrufe
- 23. Angular2 - Webpack: wie das Bündel zu minimieren richtig
- 24. Nicht zu erkennen this.state.data in ReactJs App
- 25. Erkennen maximieren/minimieren Fensterereignis und programmgesteuert
- 26. Wie zu erkennen, Multi-Finger-Touch in ionic app
- 27. Wie eine nicht verwaltete App zu erkennen, wurde abgebrochen
- 28. Wie Duplizierungscode in Android zu minimieren, ohne Objekte zu erstellen
- 29. Wie programmgesteuert minimieren/ausblenden?
- 30. Wie zu erkennen, Fähigkeiten Headset
Sie möchten 'onStop() 'anstelle von' onPause()' hören. –
Definieren Sie "Benutzer verlässt die App" .. Es gibt kein solches Konzept in android. ** edit: ** Sie können 'isFinishing()' innerhalb von 'onPause' überprüfen. Vielleicht ist es das, was Sie wollen. – Selvin
was ich meinte, ist, indem Sie die Home-Taste drücken (aus jeder Aktivität), oder den normalen Weg mit der Zurück-Button. im Fall der Zurück-Taste ist es einfach, ich kann die Onstop in der Master-Aktivität überschreiben, aber was ist mit Drücken der Startseite von jeder Aktivität –