dar*_*rja 5 android orientation onconfigurationchanged android-activity
我需要为我的活动的纵向和横向方向应用不同的布局.此外,如果方向是肖像,我需要显示警报.
我android:configChanges="orientation|keyboardHidden"在AndroidManifest中指定了.我也像这样重写onConfigurationChanged方法:
@Override
public void onConfigurationChanged(Configuration newConfig)
{
    Log.d("tag", "config changed");
    super.onConfigurationChanged(newConfig);
    int orientation = newConfig.orientation;
    if (orientation == Configuration.ORIENTATION_PORTRAIT)
        Log.d("tag", "Portrait");
    else if (orientation == Configuration.ORIENTATION_LANDSCAPE)
        Log.d("tag", "Landscape");
    else
        Log.w("tag", "other: " + orientation);
    ....
}
从横向旋转到纵向日志时看起来像:
config changed
Portrait
但是,当从纵向变为风景时,它看起来像
config changed
Portrait
config changed
Landscape
为什么onConfigurationChanged被调用两次?我怎么能避免呢?
请参阅我对另一个问题的回答:/sf/answers/227678321/
简而言之,正确处理配置更改是很难做到的。最好实现onRetainNonConfigurationInstance(),该方法在应用程序因配置更改而即将停止并重新启动之前调用。使用此方法保存您想要的任何内容(“这是一个不错的选择”),然后让系统拆除您的应用程序。
当您的应用程序使用新配置重新启动时,使用getLastNonConfigurationInstance()检索您刚刚保存的状态,并使用它来继续您的应用程序,而无需使用捆绑包和共享首选项。
| 归档时间: | 
 | 
| 查看次数: | 11658 次 | 
| 最近记录: |