Android Tip : Android 获取当前Activity对象的方式:
来源:互联网 发布:监控干扰器软件 编辑:程序博客网 时间:2024/06/09 21:21
【Android Tip】
Android 获取当前Activity对象的方式:
背景:(当你不能使用this获取Activity对象)如何方便地当前Activity对象
思路:
1.维护一个Activity的対象栈,在每个Activity的生命手气方法执行的时候,控制add和remove,栈顶元素就是当前的Activity对象。为了代码的复用,这个操作可以
写在BaseActivity中,这个思路很正常。代码就不贴了。
2.使用反射来获取当前Activity对象。(个人认为是相对优雅和解耦的方式)
查看源码发现 Activity Thread 这个类管理着所有的Activity对象,也就持有所有的Activity对象,使用反射获得当前ActivityThread对象
,然后就能拿到当前的Activity对象
示例:
public static Activity getCurrentActivity () { 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;}
思路来自: stackoverflow
0 0
- Android Tip : Android 获取当前Activity对象的方式:
- android 获取当前的activity
- android获取当前界面activity对象
- Android 如何获取当前Activity实例对象?
- Android 如何获取当前Activity实例对象?
- android 获取当前正在运行的activity
- android中获取当前activity的名称
- android中获取当前activity的名称
- Android获取当前最前面的Activity
- android 如何获取当前运行的activity
- Android 中获取当前的 Activity
- android 获取当前屏幕的Activity
- Android中获取当前的Activity
- android中获取当前activity的名称
- Android 获取当前activity的屏幕截图
- Android获取当前界面的activity
- android 获取当前屏幕显示的Activity
- Android获取当前激活Activity
- 【Leetcode】Two Sum II #Too easy, just review hashmap
- cocos2d-x 创建精灵的五种方法
- Hdu 2024C语言合法标识符
- 设计模式——工厂方法模式
- Redis 源码分析 (一)Redis竟然用 C 语言进行面向对象编程
- Android Tip : Android 获取当前Activity对象的方式:
- 身份证号码编码方法及校验算法
- 【高斯消元】[SGU275]To xor or not to xor
- ubuntu需要额外安装的包用于支持android sdk的运行
- Git使用教程
- PHP文件上传
- [Node入门] => 读书笔记(二)
- HDOJ 5615 Jam's math problem
- Java将json数据导入到excel