You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Kotlin中跳转含多Fragment的Activity时Fragment打开延迟问题

解决Activity跳转延迟、启动缓慢的问题

先验证自定义进度条是否是核心问题

临时替换或注释掉布局里的自定义圆形进度条,换成系统自带的ProgressBar,再测试跳转速度。如果跳转明显流畅,那这个自定义控件就是卡顿的根源,接下来针对性优化:

优化自定义圆形进度条的绘制性能

  • 把onDraw()里的重复计算(比如圆心坐标、半径)移到onSizeChanged()方法中,只在控件尺寸变化时计算一次,避免每次绘制都重复消耗CPU。
  • 避免在onDraw()内创建对象(比如Paint、RectF),把这些对象放到成员变量里初始化,减少内存分配和GC开销。
  • 用postInvalidateOnAnimation()替代invalidate()来触发重绘,让绘制操作和动画帧同步,减少不必要的重绘次数。
  • 开启硬件加速:在自定义View的构造函数中添加setLayerType(LAYER_TYPE_HARDWARE, null),利用GPU分担绘制压力。

同时优化多Fragment的Activity启动逻辑

即使进度条没问题,6个Fragment的初始化也可能拖慢启动速度:

  • 开启Fragment懒加载:在NavGraph里给每个Fragment设置android:launchMode="singleTop",或者利用Jetpack Navigation的懒加载特性,只在用户切换到对应页面时才初始化Fragment。
  • 延迟Fragment内的耗时操作:把网络请求、大量数据处理等逻辑从onCreateView移到onViewCreated之后,用viewLifecycleOwner.lifecycleScope.launch异步执行,不要阻塞UI线程。
  • 精简布局层级:用ConstraintLayout重构布局,减少嵌套层数,降低Measure和Layout阶段的耗时。

内容的提问来源于stack exchange,提问作者Mahnoor199

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 04:25:56