【发布时间】:2021-11-10 22:08:38
【问题描述】:
我制作了一个以两种方式运行的音乐播放器:
- 如果作为普通应用启动,它会继续播放上次关闭时播放的内容,并且应该在后台启动;
- 如果在文件管理器中选择了一个音频文件,它会播放在前台点击的歌曲。
因为我只想运行一个应用程序实例,所以我添加到 mainfest:
android:launchMode="singleTask"
我所做的就是执行这个onCreate:
uri = getIntent.getData();
if (uri != null) {
newsong = uri.toString()...
play(newsong);
} else {
moveTaskToBack(true);
playoldsong();
}
它工作得很好,除了这样一个事实,当像 (1) 一样开始时,过了一会儿,我在文件管理器中选择了一首歌曲,主要活动被带到了前面(这是我想要的)但是它继续播放歌曲选择之前正在播放的内容。播放器忽略了新歌曲,我希望它切换到它。
这实际上是有道理的,因为我调用新歌的唯一地方是onCreate。
也许launchMode 不是正确的?也许我应该@Overwrite OnNewTask(Intent) 方法?哪个是“更便宜”的解决方案?
【问题讨论】:
标签: android android-intent launchmode