我想知道是否有一种方法来区分当一个活动的onResume()方法是从同一个应用程序或不同的应用程序调用
例如,我想区分当我从Whatsapp或我的应用程序的另一个活动返回到应用程序时,我的主活动的onResume()被调用。
我知道有一种方法可以用GET_TASKS权限做到这一点,但该方法已被弃用,不建议使用。
谢谢
似乎你想知道应用程序何时从每个Activity
的背景到前景。这可以通过扩展Application
类并实现ActivityLifecycleCallbacks
接口的类来实现。首先,下面是这个类的代码:
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);
}
...
}
如果你注意到上面的代码,我们基本上是给应用程序一个5秒的宽限期从一个活动切换到另一个。如果超过这个值,就说明应用在后台运行。上面的类需要在android:name:""
属性下的清单文件的<application>
标记中注册为android:name:"MyApplication"
。
要在你的活动中使用这个,覆盖onPause()
:
private boolean resumedFromBg;
@Override
protected void onPause() {
super.onPause();
resumedFromBg = ((MyApplication) getApplication()).appInBackground;
}
如果你遇到任何问题请告诉我~