发送待处理意图时,是否会创建新活动?如果我的活动已经开始怎么办?有没有办法指定已经运行的活动,并且在我发送意图后运行该活动中的方法?
我想要做的是在通知栏中有一个按钮,该按钮用作“停止”按钮,该按钮将调用已在运行的应用程序中的停止方法。
答案 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()
。