简体   繁体   中英

how to implement onRetainNonConfigurationInstance

i made a media player in android it's working great but when i change the screen orientation, the activity is being restarted i know that this question was already asked on stackoverflow several times but none of the answers helped me. i think i should use: onRetainNonConfigurationInstance

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

but i didn't know the correct way to implement it so if someone could give me a tutorial or an implicit example i would be grateful

I believe that onRetainNonConfigurationInstance() is deprecated. It will tell you to use Fragments instead. Here is a link to the Fragment documentation. Basically, you will put your UI and data into a custom Fragment , then use the FragmentManager to store an instance of your Fragment . Then, when the activity restarts, you can fetch your Fragment and reposition as needed.

Never mind that it's deprectated, it works fine. Simplest would be:

public Object onRetainNonConfigurationInstance() {
   return this;
}

Then in YourActivity 's 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;
   }
}

In my media player, in order not to re-create MediaPlayer completely, I did the following:

1) In AndroidManifest.xml added

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

2) Inside the MainActivity added

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

I hope this helps someone.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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