0

我有一个大问题,我的应用程序需要将近 3 秒才能启动/打开。在这 3 秒内,我只看到黑屏。我知道这个黑屏的一些问题,但它们都不是问题。

我运行 traceview,我看到 onCreate 需要超过 2 秒。比我更深入地看到,TabHost 的 addTab 需要超过 2 秒。

是不是addTab也调用了每个Tab的每个Activity的onCreate??我也有一个 Custom_title_bar,但删除 custom_title 后它还需要 2-3 秒。

那么你们中有人知道我能做什么吗?我真的需要每个选项卡中的不同活动,因此,删除活动并使用视图是不可能的。

是否可以在 Thread/AsyncTask 中初始化 TabBar 并在完成后使 MainActivity 无效?

非常感谢和问候 - Mirko

编辑:在这里我添加了一些代码片段,首先在 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:将主题中的 android:background 设置为不同的东西,但它不会解决时间问题。

我添加了一个 SplashScreen,但在应用程序启动时我也看到了黑屏(但只有几毫秒)。SplashScreen 是一个带有 ImageView 和 full_screen 的 Activity,没有标题。它启动一个等待 2 秒的线程,然后打开 MainActivity 并自行完成。

4

2 回答 2

0

我不太确定您的问题是什么 - 但它的“解决方案”可能是添加启动画面。(这不是一个真正的解决方案,因为它只是掩盖了问题,而不是解决了问题。)

查看本指南,了解如何创建启动画面。

注意:您必须提供一些代码示例,以便我们能够告诉您如何解决真正的问题。

于 2011-10-27T13:35:34.160 回答
0

问题:我发现问题出在 custom_title 功能上。我唯一的方法是添加splashScreen。

第二种方法是自己创建 TopTitleBar 作为视图,而不是作为可定制应用程序的一部分。

我认为这是个坏消息,因为黑屏让我的应用无法像 android 告诉我的那样进行自定义:(

于 2011-10-27T17:11:10.777 回答