了解配置是否发生变化的最佳方法是什么?

时间:2014-04-14 05:30:53

标签: android android-configchanges

我不确定如何在我的应用上获取此信息:如何知道由于配置更改而重新启动活动的时间? (任何配置更改)。

在我的代码中,如果活动重新启动,我需要执行一个方法"通常"但不是因为配置改变。

3 个答案:

答案 0 :(得分:1)

检测方向的onConfigurationChanged()方法发生变化时。

班级变量

private boolean isOrientationChanged = false; 

在方向变更时指定真值

@Override
public void onConfigurationChanged(Configuration newConfig) 
{
    super.onConfigurationChanged(newConfig);
    isOrientationChanged = true;
}

检查onRestart()方法中的值并重置

@Override 
public void onRestart() 
{
    if ( isOrientationChanged ) 
    {
          isOrientationChanged = false;         // reset the  variable for future action.
          // Your code
    }
}

答案 1 :(得分:1)

由于配置更改而重新启动Activity时,可以保证将调用onDestroy()方法。在onDestroy()方法中,您可以使用isChangingConfigurations()来检查是否正在销毁Activity以便由于配置更改而重新创建。由于无法保存活动状态,因为在onSaveInstanceState()方法之前将调用onStop(),您可以考虑使用SharedPreference保存状态,然后在onCreate()方法中检索它。

通过在onDestroy()方法中处理此问题,我们确保处理以前在“肖像”模式下启动的后台活动的情况,现在尝试以横向模式显示。

答案 2 :(得分:0)

您可以使用OnConfigurationChange方法检查当前配置。

public void onConfigurationChanged(Configuration newConfig){

if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE)
{

}
else if(newConfig.orientation == Configuration.ORIENTATION_PORTRAIT)
{

}
    super.onConfigurationChanged(newConfig);
}