主页按钮按下Android后播放器变为空

时间:2011-04-29 14:53:09

标签: android

我正在创建一个流媒体播放器,到目前为止它的工作正常。我可以设法启动和停止流式传输。当我按下主页按钮时,活动关闭但声音仍在播放。我很好,问题是,当我再次启动应用程序并点击停止按钮时,该对象为空。那是我的代码:

public class Main extends Activity {

private MediaPlayer player;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

}

public void onPlayClick(View v) {

    try {
        player = new MediaPlayer();
        player.setDataSource("*****");
        player.setAudioStreamType(AudioManager.STREAM_MUSIC);           
        player.setOnPreparedListener(new OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mp) {
                Log.i("In", "Prepared Listener");
                player.start();
            }
        });
        player.prepareAsync();
    } catch (IllegalArgumentException e) {
        e.printStackTrace();
    } catch (IllegalStateException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

}

public void onStopClick(View v) {

    if (player != null && player.isPlaying()) {
        player.stop();
        player.release();
        player = null;
    }
}

}

有谁知道这个简单代码会出现什么问题? 非常感谢 Ť

2 个答案:

答案 0 :(得分:1)

您希望将播放器置于服务中:http://developer.android.com/reference/android/app/Service.html

这样当你重新加载活动时它仍然有效。

答案 1 :(得分:0)

我认为值得注意的是,如果你要去活动路线而不是服务,你应该放

if (player != null && player.isPlaying()) {
    player.stop();
    player.release();
    player = null;
}

在你的onStop()或你活动的onDestroy()方法中。如果你把它放在onStop()上,音频会在按下主页按钮时停止(或者任何时候另一个活动可能接管电话铃声)。如果你将它放在onDestroy()中,它将继续播放,直到系统需要你的应用程序正在使用的资源。无论哪种方式,这都是一个好主意,以便您的应用程序不会保留MediaPlayer资源,因为用户无论出于何种原因都没有按下停止按钮。