当我从垂直视图切换到水平视图时,为什么我的歌重新开始?

时间:2012-08-17 20:35:47

标签: android android-layout media-player android-mediaplayer android-lifecycle

我拥有的歌曲都是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();

}

4 个答案:

答案 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开发中罕见但非常令人不快的意外之一,您必须保存活动的当前状态并手动恢复它们。