1

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

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

4

3 回答 3

2

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

通过在onDestroy()方法中处理这一点,我们确保我们处理了以前以纵向模式启动的后台 Activity,现在尝试以横向模式显示。

于 2014-04-14T08:07:29.770 回答
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
    }
}
于 2014-04-14T05:40:00.420 回答
0

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

公共无效 onConfigurationChanged(配置 newConfig){

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

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

}
    super.onConfigurationChanged(newConfig);
}
于 2014-04-14T07:11:01.280 回答