怎麼優化?既然要減少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) {
//根據參數在UI線程顯示view
//show View 1...
//show View 2...
//show View 3...
//show View 4...
}
}.execute(Params);
create = false;
}
}
}