0

大きな問題があります。アプリを起動/開くのに 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 を開いて自分自身を終了します。

4

2 に答える 2

0

問題: 問題は custom_title 機能であることがわかりました。私にとって唯一の方法は、splashScreen を追加することです。

2 番目の方法は、TopTitleBar をカスタマイズ可能なアプリケーションの一部としてではなく、View として自分で作成することです。

Androidが私に言ったように、黒い画面が私のアプリをカスタマイズできないので、それは悪いニュースだと思います:(

于 2011-10-27T17:11:10.777 に答える
0

あなたの問題が何であるかはよくわかりませんが、それに対する「解決策」は、スプラッシュスクリーンを追加することです。(問題を修正するのではなく、問題を隠すだけなので、これは本当の解決策ではありません。)

スプラッシュ スクリーンの作成方法については、このガイドをご覧ください。

注: 実際の問題を修正する方法をお伝えできるように、いくつかのコード サンプルを提供していただく必要があります。

于 2011-10-27T13:35:34.160 に答える