2010-03-27 57 views
2

我有一個TabActivity並定義了三個選項卡。第一個標籤重量輕,可以在可接受的時間內呈現。但是第二個和第三個標籤,在點擊它們之後,需要幾秒鐘才能獲得可視化渲染。我想在加載我的第一個標籤之後,在預緩存的背景中啓動它們。一旦他們加載,我可以在他們之間快速切換。啓動所有選項卡的預緩存活動

所以我想知道如何啓動第二個和第三個選項卡。他們是新的活動加載在視圖區域。

回答

2

步驟#1:擺脫所有用作標籤內容的活動。

步驟#2:將它們改寫爲ViewsFrameLayout的孩子在TabHost活動的主佈局文件中),並使其工作。將活動作爲製表符的內容增加了沒有意義的好處的開銷。

如果這是不夠的性能增益,然後...

第3步:將你的第二個和第三個選項卡到單獨的佈局文件。將它們膨脹在onCreate()中,但只需抓住它們(不要將它們附加到TabHost)。在添加選項卡規格時,使用需要TabContentFactory的選項,並讓工廠抓取預製的Views

如果簡單地改變你的性能問題成爲onCreate(),然後...

第4步:嘗試充氣和建立在後臺線程的意見。這可能會炸燬,因爲Android不喜歡後臺線程的UI操作。即使它確實有效,但在完成工作之前,您仍然需要智能來處理用戶點擊第二個標籤的可能性。

或者,你可以加快任何標籤試圖做的事情,所以他們不會花費太多時間,至少在一開始就是這樣。

+0

我做了第1步和第2步。我沒有看到第3步的必要,因爲我的視圖不慢,我的適配器計算時間很慢。在運行時進行測試仍然需要5-7秒(不調試)。如果我的適配器是空的,加載時間是即時的。 – Pentium10 2010-03-28 12:07:15

+0

然後在後臺線程*中創建適配器,但不要將它們附加到「ListView」,直到它們準備就緒*。一個適配器直到連接到一個ListView(或其他'AdapterView')纔會真正創建'Views',所以它們可以安全地在後臺使用。您仍然需要處理用戶選擇了適配器尚未準備好的選項卡的情況(例如,彈出「ProgressDialog」)。 – CommonsWare 2010-03-28 12:56:09

+0

我做了很好的線程工作,現在我正在做進度對話框,並將與ListViews的空文本一起使用。 – Pentium10 2010-03-28 14:24:35