我不确定如何在我的应用上获取此信息:如何知道由于配置更改而重新启动活动的时间? (任何配置更改)。
在我的代码中,如果活动重新启动,我需要执行一个方法"通常"但不是因为配置改变。
答案 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);
}