我拥有的歌曲都是MediaPlayers,当我从水平方向改为垂直方向时,反之亦然,歌曲会停止,然后从歌曲的开头开始播放。我怀疑当我将布局更改为水平或垂直时,调用onPause()方法或其他东西。我可以做些什么来防止歌曲重启,并且当我从垂直变为水平时反复使用,反之亦然?这与我实施这些方法的事实有什么关系吗?
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
music.get(SongPlaying).stop();
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
music.get(SongPlaying)).stop();
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
music.get(SongPlaying)).stop();
}
答案 0 :(得分:4)
另一种方法,如果您不想自己处理方向。将媒体播放器当前位置保存在onSaveInstantState();
中 @Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("currPos", music.get(SongPlaying)).getCurrentPosition());
}
然后有一个变量保存当前位置并在onCreate
中public void onCreate(Bundle state){
if( state != null ){
playerCurrentPosition = state.getInt("currPos"));
}
//Then when you play your media use seekTo(playerCurrentPosition);
}
答案 1 :(得分:2)
切换方向时,会销毁当前活动并再次创建以进行布局。您可以通过几种不同的方式来防止这种情况,但抛出android:configChanges =“orientation” 在您的清单文件的活动部分。它应该阻止方向重新启动活动
答案 2 :(得分:1)
更改方向时,活动会重新加载。您可以锁定方向以防止活动重新加载。
答案 3 :(得分:0)
屏幕方向更改有效意味着您重新启动当前活动。登录你的onCreate和onDestroy,你会看到。 我发现这是Android开发中罕见但非常令人不快的意外之一,您必须保存活动的当前状态并手动恢复它们。