如何获取前台 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