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

在启动activity并对旧activity调用finish()后,Fragment的布局闪烁

在启动activity并对旧activity调用finish()后,Fragment的布局闪烁是由于Fragment的生命周期和Activity的生命周期不同步导致的。当旧的Activity调用finish()方法后,系统会立即销毁该Activity,并且会销毁该Activity中的所有Fragment。然而,新的Activity启动需要一定的时间,期间屏幕可能会变黑或者显示默认的背景色,这就导致了Fragment的布局闪烁。

为了解决这个问题,可以尝试以下几种方法:

  1. 使用FragmentTransaction的commitAllowingStateLoss()方法:在启动新的Activity之前,调用FragmentTransaction的commitAllowingStateLoss()方法提交Fragment的事务。这样可以避免在Activity销毁后出现状态丢失的问题,从而减少布局闪烁的可能性。
  2. 使用Fragment的setRetainInstance(true)方法:在Fragment的onCreate()方法中调用setRetainInstance(true)方法,可以使Fragment在Activity销毁后保留其实例。这样,在新的Activity启动后,旧的Fragment实例将被重新附加到新的Activity上,从而减少布局闪烁的可能性。
  3. 使用延迟加载机制:在Fragment的onResume()方法中延迟加载布局和数据。通过延迟加载,可以确保在Activity切换完成后再加载Fragment的布局和数据,从而减少布局闪烁的可能性。
  4. 使用透明背景色:在Fragment的布局文件中,将根布局的背景色设置为透明。这样,在Activity切换时,即使出现了短暂的黑屏或默认背景色,用户也不会察觉到布局的闪烁。

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

请注意,以上链接仅供参考,具体产品选择应根据实际需求进行评估和决策。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android:Fragment + Activity 二合一

前言 能否不包含侧滑菜单时候,添加一个侧滑返回,边缘finish当前Fragment?...二合一:当ActivityFragment数大于1时,滑动finishFragment,如果小于等于1时,finishActivity。...ViewDragHelper来实现,ViewDragHelper帮我们处理了大量Touch相关事件,以及速度、释放一些逻辑监控,大大简化了我们触摸事件处理。...(本篇不对ViewDragHelper做详细介绍,有不熟悉小伙伴可以自行查阅相关文档) Fragment以及Activiy滑动退出,原理是一样,都是Activity/Fragment视图上,...,这样拖拽Activityxml布局时,可以看到上个Activity界面,把布局滑走时,再finish掉该Activity即可。

64620

Android开发:实现滑动退出 Fragment + Activity 二合一

前言 能否不包含侧滑菜单时候,添加一个侧滑返回,边缘finish当前Fragment?...二合一:当ActivityFragment数大于1时,滑动finishFragment,如果小于等于1时,finishActivity。...] 效果图 谈谈实现 拖拽部分大部分是靠ViewDragHelper来实现,ViewDragHelper帮我们处理了大量Touch相关事件,以及速度、释放一些逻辑监控,大大简化了我们触摸事件处理...(本篇不对ViewDragHelper做详细介绍,有不熟悉小伙伴可以自行查阅相关文档) Fragment以及Activiy滑动退出,原理是一样,都是Activity/Fragment视图上,...、DecorView和Window背景是透明,这样拖拽Activityxml布局时,可以看到上个Activity界面,把布局滑走时,再finish掉该Activity即可。

88230

Android APP 快速 Pad 化实现

方案2:Activity 启动 A 类 Activity 时,获取 A 布局,添加到主 Activity 右侧3区预留一个空布局中。...经过大家一番思考讨论,能不能利用插件思想,把 A 类 Activity生命周期方法以及继承自 Activity方法都拿出来了,适当时候自己调用呢?...完善 Fragment Activity 行为,比如还需要模拟 Activity 启动模式、Activity result、startActivity、finish、onBackPressed 等等...通过重写 StartActivity 方法,让原来去 startActivity 动作变为添加一个新 Fragment 动作,调用 addToBackStatck()方法添加到 Fragment...3,Fragment 实现自定义 TitleBar 不改变原来 Activity 代码情况下,通过改变 Window 对象,自己实现 Fragment 布局控制。

2K60

【Android从零单排系列三十五】《Android四大组件——Activity

可以Intent中携带数据,启动目标Activity可以通过获取Intent中数据进行处理。...它可以Activity中嵌入多个Fragment,使得界面布局更加灵活和模块化。...Activity中加载布局ActivityonCreate()方法中调用setContentView()方法,传入布局文件资源ID,将布局文件与Activity关联起来。...onResume():Activity变得可见并能够与用户交互之前调用,此时Activity位于前台获得了焦点。在这个阶段,Activity处于活动状态,可以响应用户输入事件。...(Activity.RESULT_OK, resultIntent); finish(); SingleTop模式: 当要启动Activity已经位于任务栈栈顶时,会复用该Activity实例,调用

19210

Android | Jetpack 处理回退事件新姿势 —— OnBackPressedDispatcher

,从 Activity#onBackPressed() 中传递回调事件(缺点:增加了 Activity & Fragment 耦合关系); 2、 Fragment布局中设置按键监听 setOnKeyListener...因为 Activity 实际上并没有销毁,所以用户下次返回应用时是热启动; 3、调用 finish(): 结束当前 Activity,如果当前 Activity 处于栈底,则销毁 Activity 任务栈...需要注意是,进程结束内存不会立即被回收,将来(一段时间内)用户重新启动应用时是温启动启动速度比冷启动更快; 4、调用 System.exit(0) 杀死应用: 杀死进程 JVM,将来用户重新启动为冷启动...因为这些 API 表现并不理想: 1、当调用 Activity 不位于栈顶时,杀死进程系统会立即重新启动 App(可能是系统认为 前台 App 是意外终止,会自动重启); 2、当 App 退出,...分类 应用返回效果 举例 1、系统默认行为 热启动 微信、支付宝等 2、调用 moveTaskToBack() 热启动 QQ 音乐、小红书等 3、调用 finish() 温启动 待确认(备选爱奇艺、高德等

1.4K20

很全面的Android面试题

销毁;onStart可见与onStop不可见;onResume可编辑(即焦点)与onPause; 还有一个onRestart方法了,Activity被onStop,但是没有被onDestroy,再次启动此...退出activity 直接调用 finish () 方法 用户点击back键 就是退出一个activity ,退出activity 会执行 onDestroy()方法 。...通常有两种方式启动一个Service,他们Service生命周期影响是不一样。...还有findViewByTag,replace 时候设置tag 或者fragment里声明接口,然后activity获得fragment对象调用接口里方法 fragment数据传递给活动,直接getActivity...一个Activity里切换界面,切换界面时只切换Fragment里面的内容。Fragment通常用来作为一个activity界面的一部分。 view 请介绍下Android中常用五种布局

53010

很全面的Android面试题

销毁;onStart可见与onStop不可见;onResume可编辑(即焦点)与onPause; 还有一个onRestart方法了,Activity被onStop,但是没有被onDestroy,再次启动此...通常有两种方式启动一个Service,他们Service生命周期影响是不一样。...还有findViewByTag,replace 时候设置tag 或者fragment里声明接口,然后activity获得fragment对象调用接口里方法 fragment数据传递给活动,直接getActivity...一个Activity里切换界面,切换界面时只切换Fragment里面的内容。Fragment通常用来作为一个activity界面的一部分。 ? view 请介绍下Android中常用五种布局。...原理: 这个参数用于将之前加载好布局进行缓存,以便之后可以进行重用, getView()方法中进行了判断,如果 convertView为空,则使用 LayoutInflater去加载布局,如果不为空则直接

5.9K70

学习|Android利用Appintro快速制作启动界面(附源码)

Appintro启动界面 每当我们程序更新时,一般第一次进入程序时会有个快速启动界面,用于介绍程序最新更新东西,及一些简单宣传,单独设置View进行播放每次换新就感觉很麻烦,Android中Appintro...这个开源库可以快速简单实现我们想要这个效果。...Activity中注意事项 我们做启动画需要新建一个Activity继承自Appintro 注:这里我们要把setContentView(R.layout.activity_intro)屏蔽 ?...Fragment,要生成Fragment有两种方法: 使用Appintro自己SliderPage 使用自定义布局Fragment 使用Appintro自已SliderPage 这个相对来说非常简单...使用自定义布局Fragment 自定义布局Fragment,首先要自己建一个继承自Fragment类 package dem.vac.appintrodemo import android.os.Bundle

1.5K10

Android四大组件完全解析(一)---Activity

activity销毁,位于activityfragment也随之销毁。 所有Fragment子类必须包含一个无参构造方法。...all Lifecycle #onAttach 当fragmentactivity绑定时调用 #onCreate 当fragment初始化创建时调用 #onCreateView创建返回与fragment...layout fragment可以作为应用程序布局一部分,借助fragmentactivity可以更好 模块化,为更大屏幕创建更复杂用户交互,帮助应用实现小屏和大屏之间尺寸切换。...-- 当屏幕方向或者键盘方向发生改变时不去调用activityoncreate--> android:configChanges="keyboardHidden|orientation" 当该属性进行了配置...Activity也提供了一个API来管理与activity相关内部状态。例如,可以用来记录用户偏好设置,用户日历接卖弄进行一个初始化,或者是使用浏览器时为用户显示一个默认主页。

1.6K100

Android训练课程(Android Training) - 构建你第一个应用

保留Activity所有的详细设置为默认状态,点击 Finish 完成。 你项目现在只是一个基础“Hello World”应用,它包含一些默认文件。...当你构建运行这个默认应用,一个默认Activity类将启动,和加载一个包含了“hello world”布局文件。...6.模拟器启动,解锁模拟器屏幕。 Eclipse中启动这个应用 1.打开一个你项目中文件,并且点击工具栏中 Run。...这确保它们和其他应用交互时是唯一启动第二个Activity启动一个Activity调用 startActivity() 并且把你intent传递给它。...你能够通过调用 getIntent() 获得启动这个activityIntent,和获得它里面包含数据。

2.1K00

Android系统源码剖析(一)---Settings

Settings目录下找到Androidmanifest.xml清单配置文件,找到首先启动activity: <activity android:name="Settings" android:label...每行属于一个header,相当于listview中item,每一个header又有fragment与之对应,而fragment加载依赖于Activity,所依赖Activity为SubSettings.java...源码分析可以分两个步骤进行入手, 第一,headers列表加载 第二,header点击事件处理 解决以上两个问题,就可以开始不同模块进行分析 2,设置界面布局,加载headers (1),加载...,以及更新headers,PreferenceActivityoncreate()方法中被调用,以及onGetInitialHeader()方法,也是PreferenceActivityoncreate... 4,自定义操作 明白Settings界面的布局原理我们就可以随意Settings主界面的布局进行增删改了,对应是header修改 (1),修改header:xml文件下找到想要修改

1.9K20

Android 进阶17:Fragment FragmentManager FragmentTransaction 深入理解

我们就可以使用 Fragment 来实现。 实现也很简单,创建一个布局,然后 Activity 里点击时替换 Fragment。...//当前面解除一个 fragment 布局绑定调用这个方法可以重新绑定 //这将导致该 fragment 布局重建,然后添加、展示到界面上 public abstract FragmentTransaction...onCreateView() 中返回一个 布局,然后 FragmentManager 中拿到这个布局,添加到要绑定容器(Activity/Fragment ViewGroup 中,然后设置相应状态值...需要注意是,Fragment onCreate() 调用时关联 Activity 可能还没创建好,所以这里不要有依赖外部 Activity 布局操作。...关联 Activity 创建好、Fragment 布局结构初始化完成调用

2.2K100

Android 面试题:为什么 Activity 都重建了 ViewModel 还存在?—— Jetpack 系列(3)

重建,系统通过 Activity#onAttach(…) 中将这一份数据传递到新 Activity 中; 阶段 3: Activity 构造 ViewModelStore 时,会优先从 Activity...对于 ViewModel 来说,相当于 Activity 中所有的 ViewModel 映射表被透明地传递到重建 Activity 中,这就实现了恢复 ViewModel 功能。...Activity 没有调用 getViewModelStore(),那么 Activity ViewModel 并没有被取出来, // 因此准备再一次存储当前 Activity 时,...阶段 1: 处理 Destroy 逻辑时,调用 Activity#retainNonConfigurationInstances() 方法获取 Activity非配置数据,临时保存在 ActivityClientRecord...ViewModel 数据会在 Activity 非配置变更触发销毁时清除,具体分为 3 种情况: 第 1 种: 直接调用 Activity#finish() 或返回键等间接方式; 第 2 种: 异常退出

1.1K20

Android面试大纲(集合)

每次切换页面的时候,是将Fragment进行分离,适合页面较少Fragment使用以保存一些内存,系统内存不会多大影响 FragmentPageStateAdapter每次切换页面的时候,是将...调用Activity方法:getActivity Activity调用Fragment方法:接口回调 Fragment调用Fragment方法:FragmentManager.findFragmentById...,WebView硬件加速情况下滑动更加平滑,性能更加好,但是会出现白块或者页面闪烁副作用,建议WebView暂时关闭硬件加速 7、WebView内存泄漏 由于WebView是依附于Activity...、Activity在内存紧张时被回收等情况下,Activity会被重新创建,此时,AsyncTask持有旧Activity引用,这个时候会导致AsyncTaskonPostExecute()UI...热启动启动应用时,已有的进程上启动应用(用户使用返回键退出应用,然后马上又重新启动应用) 2、冷启动和热启动区别 冷启动:创建Application再创建和初始化MainActivity 热启动

1.1K20

从头开始,手写android应用框架(一)

context;//全局上下文 public static List activityList = new ArrayList();//用于存放所有启动...url,就可以匿名类重写函数中获得返回值。...编写ActivityFragment 应用页面切换是以Fragment替换为主,以尽量少创建Activity为中心思想,框架实现返回按钮切换fragment。...PS:Android是支持多个ActivityFragment使用同一个XML,但本框架中,拒绝这个特性,要求布局文件与类文件是一关系。...结构搭建好,我们使用LinkageRecyclerView组件,实现一个简单双列表布局,界面如下: 结语 最后我们看一下项目结构,如下图:  如上图,一个简单,有序,支持activity恢复数据

40920

Android开发使用Activity嵌套多个Fragment实现横竖屏切换功能方法

5、横屏FL1,FL2用布局切换按扭实现左右切换,不允许滑动切换。 看到这需求有点儿晕菜了吧!!!呵呵!!! (一)先说说我走过弯路,将横竖屏切换一个Activity中实现。...而首次切换到横屏时,ActivityonCreate()方法会执行,接着横屏FL1onCreateView()方法又会执行,这样的话,Fragment布局就会发生覆盖。...(2)、一个Activity中横竖屏切换,竖屏布局与横屏布局不一样,本文示例竖屏为Activity中嵌套3个Fragment,横屏嵌套2个Fragment,首先会有很多页面状态需要记录,其次就是Activity...权限设置说明 2、竖屏Activity切换到横屏Activity时候,通过Intent跳转到横屏Activity,然后将当前Activityfinish()掉。...(); } 3、两个Activity中实现横竖切换之后,换来一个好处,Fragment生命周期我们非常好控制,里面的逻辑想怎么写就怎么写,而且切换过来之后,布局也会自动去加载横屏布局

2.8K20
领券