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

时间:2014-05-15 22:17:53

标签: android android-intent android-pendingintent

发送待处理意图时,是否会创建新活动?如果我的活动已经开始怎么办?有没有办法指定已经运行的活动,并且在我发送意图后运行该活动中的方法?

我想要做的是在通知栏中有一个按钮,该按钮用作“停止”按钮,该按钮将调用已在运行的应用程序中的停止方法。

1 个答案:

答案 0 :(得分:1)

这取决于清单中的Activity声明或您包含的Intent标志。

例如,如果您使用FLAG_ACTIVITY_SINGLE_TOP(或活动有launchMode set to "singleTop"),则会在现有活动上调用onNewIntent(),而不是创建新活动。

在你的例子中,你应该在意图中传递一个额外的东西来表示你想要执行"停止"操作,然后在onNewIntent()中检查。

有关启动模式的官方文档中详细说明了这一点:http://developer.android.com/guide/components/tasks-and-back-stack.html#TaskLaunchModes

编辑:但是,由于最终目标是在后台播放音频,因此使用服务是更合适的选择。查看http://developer.android.com/guide/topics/media/mediaplayer.html#mpandservices

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