对启动模式感到困惑

Posted

技术标签:

【中文标题】对启动模式感到困惑【英文标题】:Confused with launchMode 【发布时间】: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) 方法?哪个是“更便宜”的解决方案?

【问题讨论】:

【参考方案1】:

您必须覆盖 onNewIntent() 才能启动用户在文件管理器中单击的歌曲。

【讨论】:

是的,这就是我刚刚所做的,并且有效。我希望有另一种方法...谢谢!

以上是关于对启动模式感到困惑的主要内容,如果未能解决你的问题,请参考以下文章

对反应模式/架构感到困惑

对 Spring-Data DDD 存储库模式感到困惑

对服务器发送的事件感到困惑

对生的和熟的终端模式感到困惑?

对签署 android APK 感到困惑?

iOS Core Data - 将上下文传递给详细视图的设计模式