Android 使用ActivityManager调用活动方法

Android 使用ActivityManager调用活动方法,android,android-activity,activity-manager,Android,Android Activity,Activity Manager,我希望获得我的应用程序的一个正在运行的活动,并在服务中调用它的一个方法。我发现我需要这样的东西,但我无法解决我的问题。可能吗 ActivityManager am = (ActivityManager) context.getSystemService(context.ACTIVITY_SERVICE); List<RunningAppProcessInfo> procInfos = am.getRunningAppProcesses(); for (int j = 0; j <

我希望获得我的应用程序的一个正在运行的活动,并在服务中调用它的一个方法。我发现我需要这样的东西,但我无法解决我的问题。可能吗

ActivityManager am = (ActivityManager) context.getSystemService(context.ACTIVITY_SERVICE);
List<RunningAppProcessInfo> procInfos = am.getRunningAppProcesses();
for (int j = 0; j < procInfos.size(); j++) {
    if (procInfos.get(j).processName.equals("com.android.pm")) {
        ...
    }
}
根据您的评论:


问题是,服务不是从我创建的活动调用的 我想关门。我有一个活动A,叫做活动B,叫做 服务S,我希望S关闭A


这是错误的做法。更好的做法是将活动注册为收听特定意图的广播接收器。当服务想要完成一个任务时,它可以广播一个特定的意图。这样,您的服务就可以隐式地与活动通信,而不必对其进行引用,也不必知道它是否正在运行。

您不能像这样与活动通信。如果您需要在服务和活动之间进行通信,请将该服务绑定到活动……问题是,我要关闭的活动没有调用该服务。我有一个活动A调用活动B调用服务S,我想S调用A的一个方法。意思是你想从服务S中完成活动城市A吗?我想调用一个方法,然后完成它你有链接、示例或其他什么吗?我明白你的意思,但我对android是新手。这里有几个使用广播接收器的教程:你不需要在清单中声明接收器。在活动中,可能在onCreate结束时,创建BroadcastReceiver实例并实现onReceive方法来调用活动方法,然后对活动调用finish。然后需要注册接收器,以便使用特定的意图过滤器触发它。意图过滤器只需要包含一个特定的操作,您可以定义它,这正是您的服务将在其发送的广播意图中放入的操作。在您的服务中,请致电sendBroadcast发送。不要忘记在活动的onDestroy中注销接收器。