启动所有选项卡的预缓存活动

时间:2010-03-27 18:45:21

标签: android performance multithreading android-tabhost

我有一个TabActivity,其中定义了三个标签。第一个标签重量轻,可以在可接受的时间内显示。但是点击它们之后,第二个和第三个选项卡确实需要几秒钟才能进行可视化渲染。在我加载了我的第一个标签后,我想在后台进行预缓存时启动它们。加载后,我可以在它们之间快速切换。

所以我想知道如何启动第二和第三个标签。它们是在视图区域中加载的新活动

1 个答案:

答案 0 :(得分:2)

步骤1:删除所有用作标签内容的活动。

步骤2:将它们重写为ViewsFrameLayout活动的主要布局文件中TabHost的子项),并使其正常运行。将活动作为标签的内容增加了开销,没有任何有意义的好处。

如果这不足以提高性能,那么......

步骤3:将第二个和第三个标签移动到单独的布局文件中。在onCreate()中对它们进行充气,但要抓住它们(不要将它们附加到TabHost)。添加标签规范时,请使用带TabContentFactory的标签,并让工厂抓住预先构建的Views

如果只是将您的效果问题转移到onCreate(),那么......

步骤#4:尝试在后台线程中充气并设置这些视图。这可能会爆发,因为Android不喜欢后台线程上的UI操作。即使它确实有效,您也需要聪明才能处理用户在完成工作之前点击第二个选项卡的可能性。

或者,你可以加快那些标签试图做的事情,这样他们就不会花费太多时间,至少在开始时。