加载片段在Android中花费更多时间

San*_*San 5 android android-asynctask android-fragments

我正在尝试替换Android中的片段,并且花费将近2-3秒将片段加载到UI中.我不确定是什么原因导致了这个问题,因为我没有执行繁重的线程onCreateView.

我的片段需要花费太多时间才能加载onCreateView.

链接:我的onCreateView的代码

我在onCreateView中所做的就是根据来自DB的数据来查看某些布局的可见性.我不认为加载页面会花费这么多时间,这对我来说没有意义.

到目前为止我尝试了什么:

我没有尝试过任何可靠的东西,除了以下是愚蠢的一些愚蠢的实现或我想是这样的..

  1. 试图在Async Task中放置一大块代码,但正如大多数代码所要求的那样setVisibility(),它不起作用doInBackground().添加a runOnUIThread()也与不使用异步任务相同.

  2. 我怀疑片段管理器可能需要一些时间来将片段加载到UI中,但是当我用另一个具有较少UI组件的片段替换时,它似乎加载得很快getFragmentManager().executePendingTransactions();.我也尝试使用.

这就是我到目前为止所尝试的,但也发现选项2是完全没必要的,因为我打印之前的日志return convertView;需要1-2秒才能打印.我不确定出了什么问题或出了什么问题.任何帮助都感激不尽.

Mus*_*eed 9

你不必调用super.onCreate()onCreateView.其次,你正在too much DB operations in oncreateView通过类似的指令来做dbHelper.getRelationGenderForEdit.你必须在中执行这些操作backGroundThread.您可以使用LoadersAsyncTasks实现此目的并将这些结果传递给Fragment并使用这些值onCreateView

希望这可以帮助.

  • 在启动`Fragment`之前,在后台完成您的工作并向用户介绍您的处理,或者您也可以在启动应用程序时保存数据,这样您就不必一次又一次地获取.您只在DB值更改时更新值.当您在应用程序启动时获得该数据时,您的"片段"将平滑加载 (3认同)
  • 首先:您应该创建一个加载屏幕并启动数据库内容的后台任务.一个任务,获取您需要的所有内容,创建一个自定义pojo,其中包含您需要决定布局内容的所有数据.在提供结果时,更新布局并关闭加载屏幕.完成(高级提示,如"预取"等也是可能的,但首先从一个简单的解决方案开始) (2认同)