如何获取前台 activity 实例?
How to get the foregrund activity instance?
想弄前景activity很久了,一直弄到现在
我不知道这是否可能,但我对我的应用程序不感兴趣,只 activity。
我的服务与我想要获取的 activity 之间没有数据传输。
我看到了很多这样的问题,但没有一个适合我的需求。
我只需要得到一个实例,不是ComponentName,也不是当前前景的描述activity。
我已经尝试过 ActivityThread、ActivityManager、ActivityManagerService(尽管我也无法获取他的实例)等等。
Field activitiesField = activityThreadClass.getDeclaredField("mActivities");// won't help
activityManager.getRunningTasks(rnd);// won't help either
如果有任何反射方式,侦听器或类似的东西,但不是静态字段。
不知道你为什么想要 Activity
的实例或其他背景信息。我建议如下。
如果您在 Fragment
中,那么您可以执行 getActivity()
- 这将提供对 Activity
的引用,然后您可以将其转换为您自己的 Activity
.
否则,您可能需要考虑拥有一个 BroadcastReceiver
,它可以为您启动一个 Activity。
您不应该直接访问 Activity
。如果您有 methods/logic 需要访问,您可以考虑将它们重构为帮助程序 class。
编辑:
"Your application runs in a secure sandbox environment, so other processes on the system cannot access your code or private data."取自官方Androiddocs
想弄前景activity很久了,一直弄到现在
我不知道这是否可能,但我对我的应用程序不感兴趣,只 activity。
我的服务与我想要获取的 activity 之间没有数据传输。
我看到了很多这样的问题,但没有一个适合我的需求。
我只需要得到一个实例,不是ComponentName,也不是当前前景的描述activity。
我已经尝试过 ActivityThread、ActivityManager、ActivityManagerService(尽管我也无法获取他的实例)等等。
Field activitiesField = activityThreadClass.getDeclaredField("mActivities");// won't help
activityManager.getRunningTasks(rnd);// won't help either
如果有任何反射方式,侦听器或类似的东西,但不是静态字段。
不知道你为什么想要 Activity
的实例或其他背景信息。我建议如下。
如果您在 Fragment
中,那么您可以执行 getActivity()
- 这将提供对 Activity
的引用,然后您可以将其转换为您自己的 Activity
.
否则,您可能需要考虑拥有一个 BroadcastReceiver
,它可以为您启动一个 Activity。
您不应该直接访问 Activity
。如果您有 methods/logic 需要访问,您可以考虑将它们重构为帮助程序 class。
编辑:
"Your application runs in a secure sandbox environment, so other processes on the system cannot access your code or private data."取自官方Androiddocs