第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

加快activity顯示速度,提高用戶體驗

加快activity顯示速度,提高用戶體驗

項目里某個activity在顯示前總是會先黑屏一會兒,然后才顯示頁面,感覺影響用戶體驗,要求優(yōu)化。好吧,從activity的生命周期方法開始吧。因為業(yè)務(wù)邏輯的關(guān)系,只用到onCreate和onResume(事實上,個人感覺,除了這倆生命周期方法以及相對應(yīng)的兩個方法,其他的生命周期方法例如onStart之類似乎都只在面試時候用到。。)。文檔里說明,onResume一旦執(zhí)行完畢,頁面就已經(jīng)顯示給用戶了,onCreate則是初始化各種(只要初始化一次的)數(shù)據(jù),比如布局(這個必須在onCreate里),一些邏輯需要的變量,對象等等。onCreate還沒有顯示給用戶,那么那段黑屏可以確定就是onCreate的時間太長了。? ? 怎么優(yōu)化?既然要減少onCreate的時間,那就精簡onCreate里的代碼。放在onResume里好了。為了用戶體驗更好一些,把頁面顯示的View細分一下,放在AsyncTask里逐步顯示,如果你夠熟練,用handler更好,這樣用戶的看到的就是有層次有步驟的一個個的view的展示,不會是先看到一個黑屏,然后一下顯示所有view。最好作成動畫,效果更自然些。利用多線程的目的就是盡可能的減少onCreate和onReume的時間,使得用戶能盡快看到頁面,操作頁面。? ? 但是,很多操作是只需要一次初始化的,都放在onResume里每次進入activity都會浪費初始化時間。這個好解決,做一個boolean變量,在onCreate里標記為true。在onResume里判斷為true就進行初始化,初始化完成立刻置為false。搞定。代碼框架:package?com.example.example; import?android.os.AsyncTask; import?android.os.Bundle; import?android.app.Activity; import?android.view.Menu; public?class?MainActivity?extends?Activity?{ private?boolean?create; @Override protected?void?onCreate(Bundle?savedInstanceState)?{ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); create?=?true;???//標記變量 } @Override protected?void?onResume(){ super.onResume(); if(create){ new?AsyncTask<Params,?Progress,?Result> new?AsyncTask<Params,?Progress,?Result>(){ @Override protected?Boolean?doInBackground(Void...?params)?{ //后臺逐步初始化view。 //init?View?1... publishProgress(values); //init?View?2... publishProgress(values); //init?View?3... publishProgress(values); //init?View?4... publishProgress(values); return?null; } @Override protected?void?onProgressUpdate(Progress...?values)?{ //根據(jù)參數(shù)在UI線程顯示view //show?View?1... //show?View?2... //show?View?3... //show?View?4... } }.execute(Params); create?=?false; } } }
查看完整描述

1 回答

?
阿旭_

TA貢獻217條經(jīng)驗 獲得超353個贊

耗時的操作單開線程,結(jié)果事再回調(diào)主線程更新UI。

原理是這樣沒錯,但寫的不全要考慮退出頁面等異常情況。

用戶體驗更重要的是加載過程中是怎樣的提示,提示過程中頁面是否可操作,如果可操作此時返回到上一頁面該頁面開的線程加截的數(shù)據(jù)更新UI會容易app崩潰。

查看完整回答
1 反對 回復 2016-08-17
  • 1 回答
  • 3 關(guān)注
  • 2687 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號