【问题标题】:App needs long time to Start with a BlackScreen应用程序需要很长时间才能以黑屏启动
【发布时间】:2011-10-27 12:45:09
【问题描述】:

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

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

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

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

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

非常感谢和问候 - 米尔科

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

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

【问题讨论】:

    标签: android android-tabhost tabactivity oncreate


    【解决方案1】:

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

    查看this guide,了解如何创建启动画面。

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

    【讨论】:

    • 谢谢。对于这个项目,SplashScreen 是一个愿望,我还实现了它。现在黑屏出现了,但只有几毫秒。我不确定为什么会有那个黑屏。我认为自定义主题是原因。我现在将添加一些代码
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-24
      • 2013-11-15
      • 2014-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-28
      相关资源
      最近更新 更多