与 launchMode 混淆
Confused with launchMode
我制作了一个以两种方式运行的音乐播放器:
- 如果作为普通应用程序启动,它将继续播放上次关闭时正在播放的内容,并且应该在后台启动;
- 如果在文件管理器中 select 编辑音频文件,它会播放在前台单击的歌曲。
因为我只想要应用程序的一个实例运行,所以我添加到 mainfest:
android:launchMode="singleTask"
我所做的就是执行这个 onCreate
:
uri = getIntent.getData();
if (uri != null) {
newsong = uri.toString()...
play(newsong);
} else {
moveTaskToBack(true);
playoldsong();
}
它很好用,除了以下事实:当像 (1) 那样启动时,过了一会儿,我在文件管理器中 select 一首歌曲,主 activity 被带到前面(这是我想要的)但它继续播放它在歌曲 selection 之前播放的内容。播放器忽略了新歌,我想让它切换到新歌。
这实际上是有道理的,因为我唯一称呼新歌的地方是 onCreate
。
也许 launchMode
不正确?也许我应该 @Overwrite
OnNewTask(Intent) 方法?哪个是 'cheaper' 解决方案?
您必须覆盖 onNewIntent() 才能启动用户在文件管理器中单击的歌曲。
我制作了一个以两种方式运行的音乐播放器:
- 如果作为普通应用程序启动,它将继续播放上次关闭时正在播放的内容,并且应该在后台启动;
- 如果在文件管理器中 select 编辑音频文件,它会播放在前台单击的歌曲。
因为我只想要应用程序的一个实例运行,所以我添加到 mainfest:
android:launchMode="singleTask"
我所做的就是执行这个 onCreate
:
uri = getIntent.getData();
if (uri != null) {
newsong = uri.toString()...
play(newsong);
} else {
moveTaskToBack(true);
playoldsong();
}
它很好用,除了以下事实:当像 (1) 那样启动时,过了一会儿,我在文件管理器中 select 一首歌曲,主 activity 被带到前面(这是我想要的)但它继续播放它在歌曲 selection 之前播放的内容。播放器忽略了新歌,我想让它切换到新歌。
这实际上是有道理的,因为我唯一称呼新歌的地方是 onCreate
。
也许 launchMode
不正确?也许我应该 @Overwrite
OnNewTask(Intent) 方法?哪个是 'cheaper' 解决方案?
您必须覆盖 onNewIntent() 才能启动用户在文件管理器中单击的歌曲。