ViewPager 旋转性能
ViewPager rotation performance
我有一个 ViewPager
,里面有 9 个 Fragments
。每个 Fragment
都从网络上加载了一些数据。当我 旋转屏幕 或 通过 Intent
打开另一个 activity 并加载所有 9 个片段时,它们都调用 OnSaveInstance
方法,其中每个片段数据都被序列化以供将来片段重新创建。它会导致一些延迟和消息
Skipped 41 frames! The application may be doing too much work on its main thread.
所以 OnSaveInstance
在 运行 上 UI 线程对吗? 9个片段的序列化使其跳帧。
我怎样才能避免这种滞后?有没有办法在后台执行 OnSaveInstance
代码?
您收到该消息的原因有很多,这并不意味着您的应用运行不佳。即使在这种情况下超过 41 帧。有关详细信息,请参阅此 post:
Meaning of Choreographer messages in Logcat
更新:
在这种情况下,post 可能会对您有所帮助:
Why use Fragment#setRetainInstance(boolean)?
使用 setRetainInstance
时请牢记 Fragment 生命周期。参见:
http://developer.android.com/reference/android/app/Fragment.html#setRetainInstance(boolean)
有关 Android 中内存管理的精彩技巧,请参阅:
https://developer.android.com/training/articles/memory.html
有关此方法的详细解释,请参阅:
Understanding Fragment's setRetainInstance(boolean)
我有一个 ViewPager
,里面有 9 个 Fragments
。每个 Fragment
都从网络上加载了一些数据。当我 旋转屏幕 或 通过 Intent
打开另一个 activity 并加载所有 9 个片段时,它们都调用 OnSaveInstance
方法,其中每个片段数据都被序列化以供将来片段重新创建。它会导致一些延迟和消息
Skipped 41 frames! The application may be doing too much work on its main thread.
所以 OnSaveInstance
在 运行 上 UI 线程对吗? 9个片段的序列化使其跳帧。
我怎样才能避免这种滞后?有没有办法在后台执行 OnSaveInstance
代码?
您收到该消息的原因有很多,这并不意味着您的应用运行不佳。即使在这种情况下超过 41 帧。有关详细信息,请参阅此 post:
Meaning of Choreographer messages in Logcat
更新:
在这种情况下,post 可能会对您有所帮助:
Why use Fragment#setRetainInstance(boolean)?
使用 setRetainInstance
时请牢记 Fragment 生命周期。参见:
http://developer.android.com/reference/android/app/Fragment.html#setRetainInstance(boolean)
有关 Android 中内存管理的精彩技巧,请参阅:
https://developer.android.com/training/articles/memory.html
有关此方法的详细解释,请参阅:
Understanding Fragment's setRetainInstance(boolean)