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

Android应用REST API重复调用排查:主界面非首次加载缓慢

问题:主界面非首次加载耗时过长,REST API被多次调用

问题背景

主界面除首次加载外,其余加载耗时都很长,Logcat显示加载数据的REST API被多次调用。

已排查的原因

  • 怀疑存在循环代码,观察数据时修改变量意外触发数据重新加载,但通过CPU Profiler分析,数据从父Fragment到子Fragment的流转正常。
  • 怀疑多个Fragment实例调用API:
    • 在Fragment的Observer中添加日志代码:
      reportGroupVM.selectedReport.observe(viewLifecycleOwner, Observer {
          binding.tvTitle.text = it.title
          LogUtil.d("EnergyConsumptionFrag", this@EnergyConsumptionFragment.toString())
          energyConsumptionVM.getSpecificReport(it.entityLinkContainer?.self?.href)
      })
      
    • 日志输出显示存在多个不同ID的Fragment实例:
      2023-09-22 21:27:21.180  6992-6992  EnergyConsumptionFrag   dev.packagename                      D  EnergyConsumptionFragment{49abc22} (ab026b8f-bfe8-4587-8d4b-d451e46bea13) id=0x7f0a0211 EnergyConsumptionFragment}
      2023-09-22 21:27:21.195  6992-6992  EnergyConsumptionFrag   dev.packagename                      D  EnergyConsumptionFragment{b12d8ca} (7a6776a6-824a-45d6-af2c-8c17207c1a43) id=0x7f0a0211 EnergyConsumptionFragment}
      2023-09-22 21:27:21.210  6992-6992  EnergyConsumptionFrag   dev.packagename                      D  EnergyConsumptionFragment{96a67d1} (6f4d5392-8971-4906-9af7-94b5bf9df8fb) id=0x7f0a0211 EnergyConsumptionFragment}
      2023-09-22 21:27:21.225  6992-6992  EnergyConsumptionFrag   dev.packagename                      D  EnergyConsumptionFragment{ff4a010} (45c24f6f-3ed6-4a75-ab08-d46f08523775) id=0x7f0a0211 EnergyConsumptionFragment}
      
    • 生成该Fragment的唯一代码位置:
      loadFragment(EnergyConsumptionFragment())
      
      private fun loadFragment(fragment: Fragment) {
          val transaction = childFragmentManager.beginTransaction()
      
          if (!fragment.isAdded) {
              transaction.add(R.id.layout_report, fragment, fragment.javaClass.simpleName)
          } else {
              //transaction.replace(R.id.layout_report, fragment, fragment.javaClass.simpleName)
          }
      
          transaction.commit()
      }
      
      这段代码逻辑看似无问题。

提问

还有哪些可能的原因需要排查?该如何调试这个问题?


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 03:01:21