onCreateやonResumeでの重い処理はレスポンスを悪くします。
重い処理をバックグラウンドスレッドで行うのも手ですが、バックグランド処理の開始を
遅らせることで更にレスポンスを早くすることが可能です。
レスポンスを早くするには素早くUIを構築することです。
ここでのUIは"現在UIを構築中"であることを伝えるものかもしれませんし、
スタブライクなUIかもしれません。
UIを素早く構築するには、UI構築処理に集中しこれを邪魔しないことです。
バックグラウンドでデータベースアクセスをしたり、ネットワークリソースにアクセスす
ることもUIの構築完了まで我慢します。
簡単なサンプルコードを載せます。
private boolean mFirstDraw = true; @Override protected void onResume() { super.onResume(); findViewById(R.id.hoge).getViewTreeObserver().addOnPreDrawListener( new ViewTreeObserver.OnPreDrawListener() { @Override public boolean onPreDraw() { if (mFirstDraw) { mHandler.sendEmptyMessageDelayed(WHAT, 1000); mFirstDraw = false; } return true; } } ); }上記のコードではViewの計測と整列を終え、描画の直前状態をフックして初回描画時の
タイミングから1000msec後にバックグラウンドスレッド処理を開始します。
こうすることで、Viewの描画が完了しUIの提供を終えた頃にバックグラウンド処理が開始
されるのでアプリケーションはUI構築に集中できます。
以上です。