7

我在android中制作了一个媒体播放器,它工作得很好,但是当我改变屏幕方向时,活动正在重新启动我知道这个问题已经在stackoverflow上被问过好几次了,但没有一个答案对我有帮助。我想我应该使用:onRetainNonConfigurationInstance

    @Override 
public Object onRetainNonConfigurationInstance() { ... }

但我不知道实现它的正确方法,所以如果有人能给我一个教程或一个隐含的例子,我将不胜感激

4

3 回答 3

7

我相信这onRetainNonConfigurationInstance()已被弃用。它会告诉你Fragments改用。Fragment文档的链接。基本上,你会将你的 UI 和数据放入一个自定义Fragment的. 然后,当活动重新开始时,您可以根据需要获取并重新定位。FragmentManagerFragmentFragment

于 2013-06-11T14:04:49.090 回答
3

别介意它已被弃用,它工作正常。最简单的是:

public Object onRetainNonConfigurationInstance() {
   return this;
}

然后在YourActivity'sonCreate()

public void onCreate(Bundle savedState)
{
   YourActivity prevActivity = (YourActivity)getLastNonConfigurationInstance();
   if(prevActivity!= null) { 
       // So the orientation did change
       // Restore some field for example
       this.myValue = prevActivity.myValue;
   }
}
于 2013-06-11T14:14:29.830 回答
0

在我的媒体播放器中,为了不完全重新创建 MediaPlayer,我执行了以下操作:

1) 在 AndroidManifest.xml 添加

<activity
        android:name=".MainActivity"
        android:configChanges="orientation|screenSize">

2)在MainActivity里面添加

 @Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    setSize(mVideoWidth, mVideoHeight);
}

我希望这可以帮助别人。

于 2018-05-03T07:45:20.810 回答