1

我目前有一个listview,当您单击一个项目时,它会将您带到一个新窗口并开始播放与该项目相关的歌曲position。问题是当我按下后退按钮返回listview并按下同一个项目时,音乐再次开始播放,超过了已经播放的内容。有没有办法解决这个问题,这样当您单击同一项目并且正在播放该歌曲时,它不会重播该歌曲?谢谢

4

2 回答 2

0

您需要使用服务让音乐在后台运行。

于 2011-07-11T23:11:44.740 回答
0

看看这篇关于创建一个播放音乐的服务的文章。看起来像你正在尝试做的事情。

您可以做的另一件事是添加一个函数,该函数在调用活动 onPause 或 onStop 方法时停止音乐。然后,不活跃的音乐播放活动将被 android OS 在它自己的好时机销毁,您不必担心播放多个音乐文件。这种方法的缺点是您只能在新窗口可见时播放音乐。如果您更改窗口,它将停止,因为将调用 onPause 或 onStop 方法。如果你想让音乐在后台播放,我认为你需要使用服务技术。

要启动服务,您可以使用意图绑定到它或使用 startService 方法。

例如,在上面链接的文章中,服务是在这里启动的:

public class MusicDroid extends ListActivity {
    public static final String MEDIA_PATH = new String("/sdcard/");
    private List<String> songs = new ArrayList<String>();
    private MDSInterface mpInterface;

    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.songlist);
        this.bindService(new Intent(MusicDroid.this,MDService.class),
            null, mConnection, Context.BIND_AUTO_CREATE); // <- starting service by creating a binding.
    }
}

官方的Android 服务 api页面应该让您对如何处理服务有一个很好的概述。

于 2011-07-11T23:59:15.387 回答