Приложению нужно много времени, чтобы начать с BlackScreen - PullRequest
0 голосов
/ 27 октября 2011

У меня большая проблема, моему приложению требуется около 3 секунд для запуска / открытия.В эти 3 секунды я вижу только черный экран.Я знаю некоторые проблемы для этого черного экрана, но все они не являются проблемой.

Я запускаю трассировку и вижу, что onCreate требуется более 2 секунд.Затем я углубляюсь и вижу, что addTab для TabHost требует более 2 секунд.

Является ли addTab также вызывающим onCreate для каждой операции каждой вкладки ??У меня также есть Custom_title_bar, но после удаления custom_title ему также нужно 2-3 секунды.

Так кто-нибудь из вас знает, что я могу сделать?Мне действительно нужны разные Действия в каждой вкладке, поэтому удалить Действия и использовать Представления невозможно.

Возможно ли инициализировать TabBar в Thread / AsyncTask и сделать недействительным MainActivity после его завершения?

Большое спасибо и привет - Мирко

РЕДАКТИРОВАТЬ: Здесь я добавил несколько фрагментов кода, сначала то, что произошло в моем onCreate в MainActivity:

    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;
}

Я также установил собственную тему для своего приложения.В трассировке метода tabhost.addTab () требуется более 2000 мсек.Может быть, именно поэтому я вижу черный экран так долго.

Кто-то знал, почему есть черный экран?Я думаю, что нет BlackScreen, когда я опишу обычное другое приложение.Я знаю, как изменить BlackScreen: установка android: фон в теме на что-то другое, но это не решит проблему времени.

Я добавил SplashScreen, но я также вижу черный экран при запуске приложения(но только несколько миллисекунд).SplashScreen - это действие с ImageView и full_screen без заголовка.Он запускает поток, который ждет 2 секунды, а затем открывает MainActivity и завершает себя.

Ответы [ 2 ]

0 голосов
/ 27 октября 2011

ПРОБЛЕМА: Я понял, что проблема заключается в функции custom_title. Единственный способ для меня - добавить заставку.

Второй способ - создать TopTitleBar самостоятельно как представление, а не как часть настраиваемого приложения.

Я думаю, что это плохие новости, потому что черный экран делает мое приложение не настраиваемым, как сказал мне android: (

0 голосов
/ 27 октября 2011

Я не совсем уверен, в чем ваша проблема - но «решением» этой проблемы может быть добавление заставки. (Это не настоящее решение, поскольку оно просто маскирует проблему, а не решает проблему.)

Ознакомьтесь с этим руководством о том, как создать заставку.

Примечание. Вам нужно будет предоставить несколько примеров кода, чтобы мы могли рассказать вам, как решить реальную проблему.

...