Fragmenttabhost性能很慢?

时间:2013-03-19 13:04:37

标签: android fragment fragment-tab-host

我已将v4 support lib用于FragmentTabHost

要求是当我将标签彼此切换到另一个时。另一个,就是打电话

onCreateView()&每次onActivityCreated()

这就是为什么我的代码性能很慢。

那么,还有其他解决方案吗?如何提高片段选项卡的性能?

4 个答案:

答案 0 :(得分:9)

听起来像是一种设计气味。

重新设计代码,以便异步完成繁重的工作。片段应该能够快速构建。如果为了使Fragment显示有用信息而需要进行任何大型处理,则应在创建Fragment之后事先或异步完成该工作,并在工作完成时通知Fragment更新其内容

答案 1 :(得分:1)

您应该注意的第一件事是观察计算/加载大量数据应该放在与主UI线程不同的工作线程上。 (在我看来)这样做的最佳选择是使用AsyncTask。你可以在片段中使用这样的东西:

private class LoadData extends AsyncTask<Void, Void, Void>{

      @Override
      protected void onPreExecute(){
          super.onPreExecute();
          // this is the place where you can show
          // progressbar for example to indicate the user
          // that there is something which is happening/loading in the background
      }

      @Override
      protected void doInBackground(Void... params){

          // that's the place where you should do 
          // 'the heavy' process which should run on background thread
      }

      @Override
      protected void onPostExecute(Void result){
          super.onPostExecute();
          // you should update your UI here.
          // For example set your listview's adapter
          // changes button states, set text to textview and etc.
      }
}

这样可以让您的标签更快地运行。希望这对您有所帮助! :)

答案 2 :(得分:1)

我找到了解决方案。我插入了所有的websevices&amp;创建时的数据库事务代码。因为oncreate in不会每次调用,直到ondestroy没有调用。 &安培;我们也可以使用另一种解决方案

fragment.show();

&安培; fragment.hide();方法

答案 3 :(得分:0)

作为Android-Developer的补充:如果您已经在使用AsyncTask,请记住,即使您使用多个AsyncTask,它们也会在后台执行,但所有顺序执行!如果您想要更多线程来处理您的任务,请查看这篇文章,它完美地解释了如何实现这一目标! Running multiple AsyncTasks at the same time -- not possible?