Activity onResume()在更改应用程序时调用



我想知道是否有一种方法来区分当一个活动的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;
}

如果你遇到任何问题请告诉我~

相关内容

  • 没有找到相关文章

最新更新