我有一个很大的问题,我的应用程序需要将近3秒才能启动/打开。在这3秒我只看到一个黑屏。 我知道这个黑屏的一些问题,但它们都不是问题。
我运行traceview,我发现onCreate需要超过2秒。我进一步深入了解,TabHost的addTab需要超过2秒。
addTab是否也调用每个Tab的每个Activity的onCreate? 我也有一个Custom_title_bar,但在删除custom_title之后它还需要2-3秒。
所有人都知道我能做些什么吗? 我真的需要每个标签中的不同活动,所以删除活动并使用视图是不可能的。
是否可以在Thread / AsyncTask中初始化TabBar并在完成后使MainActivity无效?
非常感谢和greetz - 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);
SetupTab:
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。我知道如何更改BlackScreen:将主题中的android:background设置为不同的但不会解决时间问题。
我添加了一个SplashScreen但是当应用程序启动时我也会看到黑屏(但只有几毫秒)。 SplashScreen是一个带有ImageView的活动和没有标题的full_screen。它启动一个等待2秒的线程,然后打开MainActivity并自行完成。
答案 0 :(得分:0)
我不太确定你的问题是什么 - 但对它来说是一个“解决方案”,可能会增加一个闪屏。 (这不是一个真正的解决方案,因为它只是掩盖问题而不是解决问题。)
查看this guide如何创建初始屏幕。
注意:您必须为我们提供一些代码示例,以便能够告诉您如何解决实际问题。
答案 1 :(得分:0)
问题: 我想,问题是custom_title功能。 对我来说唯一的方法是添加splashScreen。
第二种方法是自己创建TopTitleBar作为View而不是可自定义应用程序的一部分。
我认为这是个坏消息,因为黑屏让我的应用程序无法像android一样自定义告诉我:(