[英]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.