我需要在循環中添加大量視圖,而這個片段可以做到這一點,應用程序還將有一個導航抽屜和操作欄,用戶可以在其中進行操作。android addView在後臺線程
所以我想這個過程不要a)通過阻止用戶減慢應用程序,b)最好在後臺線程中添加視圖。
困境是,我認爲Android不喜歡在非UI線程中添加視圖,那麼是否有最佳做法呢?我打算在片段的視圖中顯示進度欄視圖對象,其餘視圖正在使用addView和關聯計算生成。
我需要在循環中添加大量視圖,而這個片段可以做到這一點,應用程序還將有一個導航抽屜和操作欄,用戶可以在其中進行操作。android addView在後臺線程
所以我想這個過程不要a)通過阻止用戶減慢應用程序,b)最好在後臺線程中添加視圖。
困境是,我認爲Android不喜歡在非UI線程中添加視圖,那麼是否有最佳做法呢?我打算在片段的視圖中顯示進度欄視圖對象,其餘視圖正在使用addView和關聯計算生成。
而不是在後臺線程上添加視圖,您可以通過發佈幾個Runnables
在UI線程上。下面的代碼是該技術的一個高度簡化的版本,但它類似於它在Android的Launcher應用程序中的工作方式:
private void createAndAddViews(int count} {
for (int i = 0; i < count; i++) {
// create new views and add them
}
}
Runnable r = new Runnable() {
public void run() {
createAndAddViews(4); // add 4 views
if (mMoreViewsToAdd) mTopLevelView.post(this);
}
};
mTopLevelView.post(r);
我不明白。 。 。我有5個LinearLayouts來填充大量的項目..我如何添加視圖不會使我的ProgressBar在可運行完成之前可見,而不會滯後。 – Sheychan
你能詳細說明你在做什麼嗎?即你正在添加什麼樣的觀點?我的猜測是一些adapterview變體會起作用。 – JoeyG
「是否有最佳做法?」 - 首先沒有「很多觀點」。 – CommonsWare