Android 挂起的意图:我可以指定在接收活动中运行的方法吗?

Android 挂起的意图:我可以指定在接收活动中运行的方法吗?,android,android-intent,android-pendingintent,Android,Android Intent,Android Pendingintent,发送挂起的意图时,是否会创建新的活动?如果我已经有一个活动在运行呢?有没有办法指定一个已经运行的活动,并在我发送意图后让该活动中的方法运行 我想做的是在通知栏中设置一个按钮,作为“停止”按钮,它将在已经运行的应用程序中调用stop方法。这取决于清单中活动的声明,或者您包含的意图标志 例如,如果使用标记活动\u SINGLE\u TOP(或该活动已),则将对现有活动调用,而不是创建新活动 在您的示例中,您应该在intent中传递一个额外的值,以指示您要执行“stop”操作,然后在onNewInte

发送挂起的意图时,是否会创建新的活动?如果我已经有一个活动在运行呢?有没有办法指定一个已经运行的活动,并在我发送意图后让该活动中的方法运行


我想做的是在通知栏中设置一个按钮,作为“停止”按钮,它将在已经运行的应用程序中调用stop方法。

这取决于清单中活动的声明,或者您包含的意图标志

例如,如果使用
标记活动\u SINGLE\u TOP
(或该活动已),则将对现有活动调用,而不是创建新活动

在您的示例中,您应该在intent中传递一个额外的值,以指示您要执行“stop”操作,然后在
onNewIntent()
中检查它

关于发射模式的官方文件对此有很好的解释:

编辑:但是,由于最终目标是在后台播放音频,因此使用服务是更合适的选择。检查


要从通知中控制服务(即播放、暂停、停止),您需要提供使用
startService()创建的
pendingents

谢谢您的回答,尝试实现它。当一个应用程序作为一个单端应用程序执行时,它是否会在我返回主屏幕时暂停?还是会继续在后台运行?基本上,我有一个媒体播放器流,我想继续在后台运行。@cbrad是的,它会像任何其他活动一样暂停。如果你想在后台播放音频,你应该使用服务。很抱歉我的回复太晚了,我相信服务是最好的选择。您知道通知中有停止服务的按钮吗?是的,您必须使用PendingEvent.startService()并将这些PendingEvents与通知按钮关联。这里的解释有点长,建议看一看(为startService()更改startActivity()&c)。好的,您为我指出了启动服务的正确方向。接受你的评论作为回答的协议是什么?我在评论中注意到你试图通过活动来播放媒体。这行不通。Android会在你的进程(和活动)进入后台后(在大多数手机上)相对较快地终止你的进程(和活动)。要在后台播放媒体,您需要实施
服务