java获取当前界面,android获取当前界面activity对象

标签:

在编写android应用的时候一般跟界面相关的都离不开activity,很多时候我们需要在纯java环境中使用activity对象,一般情况下我们都是靠参数传递去使用。现在我们可以使用纯java代码来获取当前系统中的activity对象,有了activity对象我们就可以做很多想做的事情,比如监听改activity的生命周期,给改activity界面添加浮动view等等。废话少说看下面方法:

public static Activity getGlobleActivity() throws ClassNotFoundException, IllegalArgumentException, SecurityException, IllegalAccessException, InvocationTargetException, NoSuchMethodException, NoSuchFieldException{

Class activityThreadClass = Class.forName("android.app.ActivityThread");

Object activityThread = activityThreadClass.getMethod("currentActivityThread").invoke(null);

Field activitiesField = activityThreadClass.getDeclaredField("mActivities");

activitiesField.setAccessible(true);

Map activities = (Map) activitiesField.get(activityThread);

for(Object activityRecord:activities.values()){

Class activityRecordClass = activityRecord.getClass();

Field pausedField = activityRecordClass.getDeclaredField("paused");

pausedField.setAccessible(true);

if(!pausedField.getBoolean(activityRecord)) {

Field activityField = activityRecordClass.getDeclaredField("activity");

activityField.setAccessible(true);

Activity activity = (Activity) activityField.get(activityRecord);

return activity;

}

}

return null;

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

标签:

  • 0
    点赞
  • 0
    收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:游动-白 设计师:我叫白小胖 返回首页
评论
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值