簡體   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