private Activity getTopActivityByReflect() {
try {
@SuppressLint("PrivateApi")
Class<?> activityThreadClass = Class.forName("android.app.ActivityThread");
Object currentActivityThreadMethod = activityThreadClass.getMethod("currentActivityThread").invoke(null);
Field mActivityListField = activityThreadClass.getDeclaredField("mActivityList");
mActivityListField.setAccessible(true);
Map activities = (Map) mActivityListField.get(currentActivityThreadMethod);
if (activities == null) return null;
for (Object activityRecord : activities.values()) {
Class activityRecordClass = activityRecord.getClass();
Field pausedField = activityRecordClass.getDeclaredField("paused");
pausedField.setAccessible(true);
if (
通过反射获取当前Activity实例,获取当前Activity 或者Application(解决不同机型context获取失败问题)
最新推荐文章于 2024-07-17 14:57:38 发布
本文介绍如何使用反射机制来可靠地获取当前运行的Activity或Application上下文,特别适用于处理不同设备上常规获取Context方法可能失败的情况。
摘要由CSDN通过智能技术生成