getTopActivity
时间: 2024-01-20 12:02:33 浏览: 14
如果想获取当前 Activity 栈中的栈顶 Activity,可以使用以下代码:
```
public Activity getTopActivity(Context context) {
ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> taskInfos = activityManager.getRunningTasks(1);
if (taskInfos != null && !taskInfos.isEmpty()) {
ComponentName topActivity = taskInfos.get(0).topActivity;
try {
return Class.forName(topActivity.getClassName()).newInstance();
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
}
```
其中,通过 `ActivityManager` 的 `getRunningTasks` 方法获取当前运行任务的列表,然后取出列表中的第一个元素,即为当前正在运行的任务。通过该任务的 `topActivity` 属性获取栈顶 Activity 的 `ComponentName` 对象,然后通过反射创建该 Activity 的实例并返回。需要注意的是,这种方式获取的栈顶 Activity 可能会被系统强制销毁,因此需要做好异常处理。