Es scheint, Sie wissen wollen, wenn App aus dem Hintergrund in den Vordergrund in jedem Activity
kommt. Dies kann mit einer Klasse erreicht werden, die die Klasse Application
erweitert und die Schnittstelle ActivityLifecycleCallbacks
implementiert. Zum einen ist hier der Code für diese Klasse:
public class MyApplication extends Application implements ActivityLifecycleCallbacks {
public boolean appInBackground;
private Handler mHandler;
...
@Override
public void onActivityResumed(Activity activity) {
Log.i("Activity Resumed", activity.getLocalClassName());
mHandler.cancelCallbacksAndMessages(null);
appInBackground = false;
}
@Override
public void onActivityPaused(Activity activity) {
Log.i("Activity Paused", activity.getLocalClassName());
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
appInBackground = true;
}
}, 5000);
}
...
}
Wenn Sie in obigen Code bemerken sind wir im Grunde die App eine Karenzzeit von 5 Sekunden ergibt von einer Aktivität zur anderen zu wechseln. Wenn es mehr als das überschreitet, bedeutet dies, dass die App im Hintergrund war. Die oben genannte Klasse muss im Tag <application>
Ihrer Manifestdatei unter android:name:""
Eigenschaft als android:name:"MyApplication"
registriert sein.
Um dies in Ihrer Tätigkeit zu nutzen, außer Kraft setzen die onPause()
:
private boolean resumedFromBg;
@Override
protected void onPause() {
super.onPause();
resumedFromBg = ((MyApplication) getApplication()).appInBackground;
}
Lassen Sie mich wissen, wenn Sie in Probleme laufen ~
„Ich als onResume meiner Haupttätigkeit unterscheiden möchten() aufgerufen wird wenn ich von WhatsApp oder einer anderen Aktivität meiner App zur App zurückkehre "- warum? – CommonsWare