App 的背景音乐应该有自己的主线吗?

Should an App's background music have a thread of it's own?

我正在尝试构建一个应用程序,只要调用 onCreate() 就会播放一段音乐,我希望这段音乐在整个应用程序中播放,即跨活动播放。到目前为止,我所做的是在 OnCreate() 中创建一个线程,我将其称为 backgroundMusic,在其中我从原始文件夹中的音乐片段创建了一个 MediaPlayer 对象。考虑到音乐本身只播放一分钟左右,而在应用程序上花费的平均时间更多,我做了一个 while 循环,只要应用程序是 运行 检查音乐是否正在播放,如果没有则调用开始();

backgroundMusic = new Thread(new Runnable() {
    @Override
    public void run() {
        while ( appIsRunning ){

            if( ! music.isPlaying () ){
                music.start();
            }
        }
    }
});backgroundMusic.start();

代码运行得很好,但是我确实注意到了一些延迟,尤其是后来当其他一些线程和图像得到 loaded.what 我想问一下,这是播放背景音乐的合适方式吗?有更好更有效的方法吗? 另外,如何让音乐在应用程序关闭时停止?

is this an appropriate way to play background Music?

不,您需要在服务上声明音乐。一项服务:

  • 将独立于 activity LifeCycle 因此当 Activity 关闭时音乐将继续播放

  • 可以在来电等需要时暂停

Here 可以帮助您入门。编码愉快!