[英]how to implement onRetainNonConfigurationInstance
我在Android中制作了一个媒体播放器,它工作得很好但是当我改变屏幕方向时,活动正在重新启动我知道这个问题已经在stackoverflow上被问了好几次,但没有一个答案对我有帮助。 我想我应该使用:onRetainNonConfigurationInstance
@Override
public Object onRetainNonConfigurationInstance() { ... }
但我不知道实现它的正确方法,所以如果有人能给我一个教程或一个隐含的例子,我将不胜感激
我相信onRetainNonConfigurationInstance()
已被弃用。 它会告诉你改为使用Fragments
。 这是Fragment
文档的链接。 基本上,你会把你的UI和数据集成到一个自定义的Fragment
,然后用FragmentManager
存储您的实例Fragment
。 然后,当活动重新启动时,您可以根据需要获取Fragment
并重新定位。
没关系它已经被删除了,它运作正常。 最简单的是:
public Object onRetainNonConfigurationInstance() {
return this;
}
然后在YourActivity
的onCreate()
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.