繁体   English   中英

如何实现onRetainNonConfigurationInstance

[英]how to implement onRetainNonConfigurationInstance

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

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

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

我相信onRetainNonConfigurationInstance()已被弃用。 它会告诉你改为使用Fragments Fragment文档的链接。 基本上,你会把你的UI和数据集成到一个自定义的Fragment ,然后用FragmentManager存储您的实例Fragment 然后,当活动重新启动时,您可以根据需要获取Fragment并重新定位。

没关系它已经被删除了,它运作正常。 最简单的是:

public Object onRetainNonConfigurationInstance() {
   return this;
}

然后在YourActivityonCreate()

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;
   }
}

在我的媒体播放器中,为了不完全重新创建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);
}

我希望这可以帮助别人。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM