要查找当前处于前台的 Activity/Fragment,可以使用以下代码示例:
ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
List taskInfo = am.getRunningTasks(1);
ComponentName componentInfo = taskInfo.get(0).topActivity;
String currentActivityName = componentInfo.getClassName();
FragmentManager fragmentManager = getSupportFragmentManager();
List fragments = fragmentManager.getFragments();
Fragment currentFragment = null;
if (fragments != null && fragments.size() > 0) {
for (Fragment fragment : fragments) {
if (fragment != null && fragment.isVisible()) {
currentFragment = fragment;
break;
}
}
}
if (currentFragment != null) {
String currentFragmentName = currentFragment.getClass().getSimpleName();
}
注意:在 Android Studio 的最新版本中,getRunningTasks()
方法被标记为过时,因为它可能会返回包含其他应用程序的任务信息。所以在 Android 5.0(API 级别 21)及以上版本中,不再推荐使用该方法。但是,如果你的目标设备为 Android 5.0 以下版本,仍然可以使用该方法。