首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在屏幕旋转时,不调用activity onCreate()

()是因为Android系统会重新创建当前活动的实例来适应屏幕的旋转。这是由于屏幕旋转会导致活动的配置发生变化,例如屏幕的宽度和高度等。为了保持用户体验的连续性,Android系统会销毁当前活动的实例并重新创建一个新的实例。

为了在屏幕旋转时保持数据的持久性,可以通过以下方法来实现:

  1. 使用onSaveInstanceState()方法:在活动被销毁之前,系统会调用该方法,可以在该方法中保存活动的关键数据。然后,在新创建的活动实例中的onCreate()方法中,可以通过Bundle对象恢复保存的数据。
  2. 使用ViewModel:ViewModel是一种设计模式,用于在屏幕旋转等配置更改时保持数据的持久性。ViewModel对象会在活动被销毁和重新创建时保持不变,因此可以在ViewModel中保存和管理数据。
  3. 使用Fragment:将活动拆分为多个片段,每个片段都有自己的生命周期。在屏幕旋转时,片段的生命周期会发生变化,但活动本身不会被销毁。因此,可以将需要保持持久性的数据保存在片段中。

总结起来,为了在屏幕旋转时保持数据的持久性,可以使用onSaveInstanceState()方法、ViewModel或Fragment来保存和恢复数据。这样可以避免调用activity onCreate(),从而提升用户体验。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云存储服务(对象存储):提供高可靠、低成本、安全的云端存储服务,适用于各种场景。详细信息请参考:腾讯云对象存储
  • 腾讯云云服务器(CVM):提供弹性计算能力,支持按需购买、弹性扩容、灵活配置等特性。详细信息请参考:腾讯云云服务器
  • 腾讯云人工智能:提供丰富的人工智能服务,包括图像识别、语音识别、自然语言处理等。详细信息请参考:腾讯云人工智能
  • 腾讯云物联网平台:提供全面的物联网解决方案,包括设备接入、数据管理、规则引擎等功能。详细信息请参考:腾讯云物联网
  • 腾讯云区块链服务:提供高性能、可扩展的区块链解决方案,适用于金融、供应链等领域。详细信息请参考:腾讯云区块链服务
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android 屏幕旋转 处理 AsyncTask 和 ProgressDialog 的最佳方案

,当用户旋转屏幕会重新启动。...中启动一个异步任务去加载数据,这里使用Thread.sleep模拟了一个耗时操作;当用户旋转屏幕发生重新启动,会onSaveInstanceState中进行数据的存储,onCreate中对数据进行恢复...从效果图可以看到,无论如何旋转不会重启Activity. 效果图: 6、旋转屏幕的最佳实践 下面要开始今天的难点了,就是处理文章开始所说的,当异步任务执行时,进行旋转,如果解决上面的问题。...传入新的Activity,我们会在再次打开一个加载框,当然了因为屏幕旋转并不影响加载的数据,所有后台的数据一直继续加载。...,其实不仅是屏幕旋转需要保存数据,当用户使用你的app,忽然接到一个来电,长时间没有回到你的app界面也会造成Activity的销毁与重建,所以一个行为良好的App,是有必要拥有恢复数据的能力的~~

2.1K20

Android 横竖屏处理的知识小结

Java 中调用 Activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) ,具体的值和作用见下文。...的生命周期被重新调用,有的资料说: 当设置 Activity 的 android:configChanges 属性,切到横屏时会重新执行一次生命周期,而切到竖屏时会执行两次。...例如 EditText 中输入到一半的文字 Activity 重新创建后会丢失。所以如果有办法能在旋转屏幕不重新创建 Activity,应该是更好的一种选择。...横竖屏切换的回调 一旦我们按照上述方法设置了 android:configChanges 属性,那么横竖屏切换 Activity 将不会重新创建,那么当屏幕旋转,我们代码上怎么感知呢?...触发横竖屏切换,如果希望 Activity 销毁并重新创建,可以设置 Activity 的 android:configChanges=”keyboardHidden|orientation|screenSize

4.4K40
  • Android中页面旋转销毁Webview(不重建Activity

    Activity不重建 Android中,如果希望WebView页面设备旋转销毁并重新加载,可以通过以下步骤实现: AndroidManifest.xml文件中,对应的Activity中添加如下配置...: android:configChanges="orientation|screenSize" 这将告诉系统设备旋转屏幕尺寸改变不重新创建Activity。...例如,如果希望Activity设备旋转屏幕尺寸变化时都不被销毁和重新创建,可以这样配置: android:configChanges="orientation|screenSize" 这样,当设备的方向或屏幕尺寸发生变化时...,Activity不会被销毁和重新创建,而是会调用onConfigurationChanged()方法进行相应的处理。...该方法中,你可以选择执行任何操作,或者手动调整布局等。

    38510

    Android屏幕旋转之横屏竖屏切换的实现

    开门见山的说,实现屏幕自动/手动旋转的方式有两种: 一种是工程的代码中定义,这种方式横竖屏切换执行的操作是:销毁当前Activity–根据新的屏幕尺寸重建Activity。...另一种是工程的AndroidManifest.xml中定义,这种定义的方式某些情况下可以实现“销毁需要横竖屏的Activity”,因为这种方式不会销毁Activity后重建Activity,因此Activity...接下来分别介绍这两种实现方式: 方式一:代码中定义 需要横屏的Activity中的onCreate方法内添加如下语句,并且要求该语句位于onCreate方法内setContentView(**)语句之前...我想要实现的是当打开“屏幕旋转,App内的Activity跟随重力感应器;当关闭“屏幕旋转,App内的Activity固定为默认方向。如何做到关闭重力传感器,App亦关闭屏幕自动旋转?...当参数为user,当“屏幕旋转”开启,则特定Activity根据根据重力传感器改变横竖屏;当“屏幕旋转”关闭,则特定Activity会固定位默认方向(一般为正面竖屏)。

    7.1K40

    【Android 应用开发】Activity 状态保存 OnSaveInstanceState参数解析

    相关方法介绍  (1) onCreate(Bundle savedInstanceState) 方法 Activity 创建回调 : 该方法会自动传入一个 Bundle 对象, 该 Bundle 对象就是上次被系统销毁...; onSaveInstanceState方法调用注意事项 :  -- 用户主动销毁不会调用 : 当用户点击回退键 或者 调用了 finish() 方法, 不会调用该方法; -- 调用时机固定 : 该方法一定是...Activity 被系统销毁之后 恢复 Activity 调用, 只有销毁了之后重建的时候才调用, 如果内存充足, 系统没有销毁这个 Activity, 就不需要调用; -- Bundle 对象传递...: 该方法保存的 Bundle 对象 Activity 恢复的时候也会通过参数传递到 onCreate() 方法中; -- 位于生命周期位置吧 : 该方法 onResume() 方法之前保存信息;...System.out.println("onSaveInstanceState() : save date www.octopus.org.cn"); } } 运行结果 : 在运行的过程中 旋转屏幕

    39020

    Android-Jetpack笔记-ViewModel

    ViewModel处于数据逻辑层,他的生命周期贯穿整个宿主,如act因屏幕旋转销毁重建,其依然存活,只有act.finish后,才会自动销毁,因此可以用他来维持宿主的数据状态。...方法打印ViewModel的hashCode,可见屏幕旋转导致act重建,mCommonViewModel还是同一个实例, ?...= null) { // Restore the ViewModelStore from NonConfigurationInstances //act屏幕旋转重建...ActivityThread.performLaunchActivity中被调用, //ActivityThread.java Activity performLaunchActivity(ActivityClientRecord...优缺点 优点: 页面退出,自动销毁 屏幕旋转、语言切换后数据丢失,而onSaveInstanceState面对复杂数据需要序列化 持有view层,方便单元测试 缺点: 虽然要比onSaveInstanceState

    76120

    Activity横竖屏切换的那些事

    https://blog.csdn.net/gdutxiaoxu/article/details/62235974 讲解之前需要说明的是 旋转屏幕系统的自动旋转屏幕开启的情况下,我们旋转屏幕...手动设置屏幕:我们自己去调用Activity的 setRequestedOrientation 方法。...screenLayout 屏幕布局发生变化——这个会导致显示不同的Activity屏幕方向发生变化——用户旋转屏幕。...如果我们打开系统的自动旋转屏幕旋转屏幕,系统不会发生变化,也不会调用 Activity 的 onConfigurationChanged 方法。..., 可能有人会有这样的疑问,当我们设置了Activity的方向为竖屏或者横屏的时候,旋转屏幕并不会重新调用Activity的各个生命周期,那我们要怎样检测呢?

    2.2K20

    已中招!Android 基础面试常常吊死在这几个问题上……

    10、面试官:当旋转屏幕Activity如何响应? 11、面试官:你是如何做到旋转屏幕防止数据重新加载和重置的? 12、面试官:说一下AsyncTasks和线程他们的区别!... Activity 生命周期中,无论是应用程序启动,还是Activity 被销毁然后重新创建(例如在配置更改期间),都会调用一次 onCreate() 方法。...Standard 是默认的,就是指定启动模式的时候用到的是这个!其他的指定的时候使用! 面试官:你糊弄我呐?...应聘者:旋转屏幕,当前的 Activity 实例将被破坏,并以新的方向创建Activity的新实例。旋转屏幕,由于屏幕旋转时会重新创建布局,将首先调用onCreate() 方法。...第三波 11、面试官:你是如何做到旋转屏幕防止数据重新加载和重置的?

    2K20

    “终于懂了“系列:Jetpack AAC完整解析(三)ViewModel 完全掌握!

    1.1 出场背景 详细介绍ViewModel前,先来看下背景和问题点。 Activity可能会在某些场景(例如屏幕旋转)销毁和重新创建界面,那么存储在其中的界面相关数据都会丢失。...看到屏幕旋转而重新创建Activity后,ViewModel对象依然会保留。只有Activity真正Finish的ViewModel才会被清除。...4.1 使用场景 我很久之前一篇文章《Activity生命周期》中有提到: onSaveInstanceState调用时机: 当某个activity变得“容易”被系统销毁,该activity的onSaveInstanceState...3、按下电源按键(关闭屏幕显示)。 4、从activity A中启动一个新的activity。 5、屏幕方向切换,例如从竖屏切换到横屏。...屏幕切换之前,系统会销毁activity A,屏幕切换之后系统又会自动地创建activity A,所以onSaveInstanceState一定会被执行。

    1.8K10

    Android 进阶解密笔记-插件化

    现在知道的做法也就只有使用ActionBarDrawerToggle的使用在onPostCreate需要在屏幕旋转时候等同步下状态,Google官方提供的一些实例就是如下做法: @Overrideprotected...onCreate方法只Activity创建执行一次,而onStart方法Activity的切换以及按Home键返回桌面再切回应用的过程中被多次调用。...,此方法会被调用; 在用户改变屏幕方向,此方法会被调用; 在当前Activity跳转到其他Activity或者按Home键回到主屏,自身退居后台,此方法会被调用。...第一种情况我们无法保证什么时候发生,系统根据资源紧张程度去调度;第二种是屏幕翻转方向,系统先销毁当前的Activity,然后再重建一个新的,调用此方法,我们可以保存一些临时数据;第三种情况系统调用此方法是为了保存当前窗口各个...onRestoreInstanceState调用 Activity被覆盖或退居后台之后,系统资源不足将其杀死,然后用户又回到了此Activity,此方法会被调用; 在用户改变屏幕方向,重建的过程中,

    82310

    屏幕旋转调用PopupWindow update方法更新位置失效的问题及解决方案

    接到一个博友的反馈,屏幕旋转调用 PopupWindow 的 update 方法失效。...使用场景如下:一个 Activity 中监听屏幕旋转事件,Activity主布局文件中有个按钮点击弹出一个 PopupWindow,另外在主布局文件中有个 ListView。...测试结果发现:如果 ListView 设置为可见(visibile)的话,屏幕旋转调用的 update 方法无效,如果 ListView 设置为不可见(gone)或者直接删除的话,屏幕旋转调用的update...-- 这个ListView的显示隐藏直接影响到PopupWindow屏幕旋转的时候update方法是否生效 --> <ListView android:id="@+id/listview"...android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="监听<em>屏幕</em><em>旋转</em>并<em>调用</em>

    1.9K90

    屏幕旋转调用PopupWindow update方法更新位置失效的问题及解决方案

    接到一个博友的反馈,屏幕旋转调用 PopupWindow 的 update 方法失效。...使用场景如下:一个 Activity 中监听屏幕旋转事件,Activity主布局文件中有个按钮点击弹出一个 PopupWindow,另外在主布局文件中有个 ListView。...测试结果发现:如果 ListView 设置为可见(visibile)的话,屏幕旋转调用的 update 方法无效,如果 ListView 设置为不可见(gone)或者直接删除的话,屏幕旋转调用的update...-- 这个ListView的显示隐藏直接影响到PopupWindow屏幕旋转的时候update方法是否生效 --> <ListView android:id="@+id/listview"...android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="监听<em>屏幕</em><em>旋转</em>并<em>调用</em>

    1.2K00

    详解 Android Activity 生命周期

    从以下几个方面详细说一下Activity的生命周期:  1.回到主屏幕再打开和退出程序的时候。   2.屏幕旋转的时候。   3.打开其它的Activity的情况。   ...和我们看官方的文档一至,Activity被停止后再次激活的时候 才会被调用。...2.旋转屏幕的时候。    运行我们的应用程序,和第一次打开一样调用create,start.和resume ?   接下来我们旋转一下屏幕看一下会发生什么。 ?   一下子。调用了好多。...这里就要注意了,如果我们的程序 需要支持屏幕旋转,那我这就要调用onSaveInstanceState()方法来保存当前的数据状态,onCreate方法里恢复 这些状态的值。...然后主页面上按一下我们的按钮,打开另一个Activity. ?   按返回键看一下。 ?   它会调用onRestart(),onStart(),onResume。

    79060

    Android Studio 深入研究 之 ✨ -基础知识学习历程(进阶)

    ()一个参数和两个参数的区别: 重写ActivityonCreate()方法时会发现,这玩意有两个参数: ?...:当系统"未经你许可"销毁了你的activity,则onSaveInstanceState会被系统调用, 这是系统的责任,因为它必须要提供一个机会让你保存你的数据(你可以保存也可以不保存)。...之所以有两个可以获取到保存数据的方法,是为了避免Act跳转而没有关闭, 然后onCreate()方法,而你又想取出保存数据~ 说回这个Activity拥有了持久化的能力,增加的这个PersistableBundle...横竖屏切换Act走下述生命周期: onPause-> onStop-> onDestory-> onCreate->onStart->onResume 关于横竖屏切换可能遇到下述问题: 1.先说下如何禁止屏幕横竖屏自动切换吧...如果用户旋转设备这屏幕会横竖屏切换。 nosensor:忽略物理感应器,这样就不会随着用户旋转设备而更改了("unspecified"设置除外)。

    43240

    《Android编程权威指南》之Activity的生命周期篇

    本章讲述 Activity 生命周期、状态以及状态切换系统调用的方法。...(发生在点击了后腿按钮) Stopped 表示 activity 在内存中具有实例,但其视图屏幕上不可见。...通常,通过覆盖 onCreate(Bundle) 方法,activity 可以预处理以下 UI 相关工作: 实例化组件并将它们放置屏幕上(调用setContentView(int)方法); 引用已实例化的组件...设备配置实际是指屏幕方向、屏幕像素密度、屏幕尺寸、键盘类型、语言等。 在运行时配置变更(runtime configuration change)发生,可能会有更合适的资源来匹配新的设备配置。...onCreate(Bundle) 方法中取回这些数据,解决旋转问题。

    62810
    领券