android如何重启设备方向上的活动或片段?

时间:2016-07-12 16:56:14

标签: android rotation restart

在旋转应用程序时,android如何重启活动或片段? 我对它在过程中使用的方法或标志感兴趣。 THX

4 个答案:

答案 0 :(得分:0)

当您的方向发生变化时,所有碎片和活动都会被销毁,并且会再次重新创建视图;除非您更改配置设置:

<activity android:name=".SampleActivity"
          android:configChanges="orientation|keyboardHidden">

所以基本上这里的关键是onStop()和onDestroy(),你应该在onStop()方法(甚至onPause())中旋转时保存任务的状态,以便在加载视图时再次重启它们(的onResume())。

在此处查看更多link

答案 1 :(得分:0)

当活动和碎片旋转时,它们会被销毁(使用onDestroy()),然后它们会经历与创建时相同的生命周期。

答案 2 :(得分:0)

当任何配置发生更改(例如设备方向)时,除非您在清单文件中修改了此过程,否则将销毁并重新创建活动。正如@Lazai所提到的,如果更改活动配置更改功能,则必须手动加载新方向所需的任何新资源,包括回调Activity.onConfigurationChanged(Configuration newConfig)内的样式,主题,可绘制内容和布局。

注意:如果您未在清单文件中指明您要手动处理配置更改,则您将永远不会收到 Activity.onConfigurationChanged(Configuration newConfig)的来电

Android exports recommend not handling the configuration changes yourself and letting the OS handle itself。那么当你没有调用onConfigurationChanged(Configuration newConfig)时,如何知道何时发生方向变化?好吧,如果你的目标是API Level 11以上,那么它们就是Activity类的一个方便的方法,它指示活动是否正在经历配置更改,称为Activity.isChangingConfigurations()。在活动准备销毁之前,此方法将始终返回false。它将在调用Activity.onPause()之前具有有效值,您可以检查并确定您的设备是否正在旋转,并且您的应用应该执行一些特殊优化或状态保存过程。

我个人建议让系统处理配置更改并检查方向是否正在发生变化,因为在大型应用程序或复杂活动中,重新加载必要的资源和资产会非常繁琐,以防止活动丢弃简单对象或在轮换期间。

答案 3 :(得分:-1)

片段中的

覆盖onconfigurationchanged方法

@Override
public void onConfigurationChanged(Configuration newConfig) 
{
   super.onConfigurationChanged(newConfig);

  // reload your views here
}
相关问题