大きな問題があります。アプリを起動/開くのに 3 秒近くかかります。この 3 秒間、黒い画面しか表示されません。この黒い画面の問題はいくつか知っていますが、すべてが問題というわけではありません。
traceview を実行すると、onCreate に 2 秒以上かかることがわかります。もっと深く見てみると、TabHost の addTab には 2 秒以上必要です。
addTab は、各タブの各アクティビティの onCreate も呼び出しますか?? Custom_title_bar もありますが、custom_title を削除した後も 2 ~ 3 秒かかります。
それで、あなたの誰かが私に何ができるか考えていますか? 各タブに異なるアクティビティが本当に必要なので、アクティビティを削除してビューを使用することはできません。
Thread/AsyncTask で TabBar を初期化し、終了後に MainActivity を無効にすることは可能でしょうか?
どうもありがとうございました - ミルコ
編集:ここにいくつかのコード スニペットを追加しました。最初に、MainActivity の onCreate で何が起こったのか:
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.main_activity);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.window_title);
Intent intent = new Intent(MainActivity.this, A.class);
setupTab(R.string.tab_a, R.drawable..., intent);
intent = new Intent(MainActivity.this, B.class);
setupTab(R.string.tab_b, R.drawable..., intent);
intent = new Intent(MainActivity.this, C.class);
setupTab(R.string.tab_c, R.drawable..., intent);
intent = new Intent(MainActivity.this, D.class);
setupTab(R.string.tab_d, R.drawable..., intent);
intent = new Intent(MainActivity.this, E.class);
setupTab(R.string.tab_e, R.drawable..., intent);
mTabHost.setCurrentTab(0);
セットアップタブ:
private void setupTab(int labelRes, int iconRes, Intent intent) {
String tag = (String) getText(labelRes);
mSpec = mTabHost.newTabSpec(tag)
.setIndicator(createTabIndicator(this, tag, iconRes))
.setContent(intent);
mTabHost.addTab(mSpec);
}
private View createTabIndicator(Context context, String title, int icon) {
LinearLayout indicator = (LinearLayout) LayoutInflater.from(context).inflate(R.layout.tab_indicator, null);
TextView label = (TextView) indicator.findViewById(android.R.id.title);
if(title == null) label.setVisibility(View.GONE);
else label.setText(title);
ImageView tabicon = (ImageView) indicator.findViewById(android.R.id.icon);
tabicon.setImageResource(icon);
return indicator;
}
また、アプリケーションにカスタム テーマを設定しました。traceview では、メソッド tabhost.addTab() に 2000 ミリ秒以上が必要です。たぶんこれが、ブラックスクリーンが長く見える理由です。
BlackScreen がある理由を知っている人はいますか? 通常の別のアプリを開くと、BlackScreenはないと思います。BlackScreen を変更する方法を知っています。テーマの android:background を別のものに設定しますが、時間の問題は解決しません。
SplashScreen を追加しましたが、アプリの起動時に黒い画面も表示されます (数ミリ秒のみ)。SplashScreen は、タイトルのない ImageView と full_screen を持つアクティビティです。2 秒待機するスレッドを開始し、MainActivity を開いて自分自身を終了します。