[英]Android displaying white screen until Asynctask starts but I have already loaded a layout
因此,我有以下代碼和一個問題:它應該加載一個布局,該布局應顯示“正在下載數據庫...”(動態添加到布局中),但是在更新數據庫之前出現白屏,然后繼續進行處理add_categories_layout(0)並正常工作。
如何獲得顯示第一個布局的信息?
受保護的void onResume(){
super.onResume();
setContentView(R.layout.home_screen_layout);
SF = (LinearLayout) findViewById(R.id.SF);
p_db_adapter = new DBAdapterProducts(getApplicationContext());
c_db_adapter = new DBAdapterCategories(getApplicationContext());
add_downloading_DB_layout();
new UpdateDB().execute(CATEGORY_URL, PRODUCTS_URL, TIMESTAMP_URL_CATEGORIES, TIMESTAMP_URL_PRODUCTS);
while(DBupdated == false){}
add_categories_layout(0);
}
您應該將setContentView
放在onCreate()
或onCreateView()
我們還能看到布局的動態添加嗎?
在onResume完成之前,它不會繪制屏幕,而在DBUpdated為true之前,onResume將不會完成(此時交換布局)。
通常,您可以在oncreate()
方法中設置contentview。 那里可能有代碼,導致它無法正常工作。 如果您沒有Oncreate方法,請制作一個並在其中復制/粘貼此代碼。
您可以放置add_categories_layout(0);
在AsyncTask
的onPostExecute()
,因為它運行在UI Thread
。 因此,當您的任務完成時,它將運行此方法, onResume()
可以完成所需的工作。 如果您的AsyncTask
是一個內部類,那么您將有權訪問Activity
方法和成員變量。 如果它是一個單獨的文件,則只需將其Activity
的引用傳遞給它以調用該方法。
如果需要, 這里有幾個答案可以幫助您。
正如其他人所說, setContentView()
通常是在onCreate()
完成的,以確保它是運行的第一批內容之一,但這不是問題。 但是,除非您有理由將其放在onResume()
,否則我將其移到那里。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.