2013-06-19 3 views
3

Когда я запускаю свое приложение, я вижу белый экран на пару секунд, прежде чем появится экран заставки.Всплеск экрана Android белый в начале?

Мне интересно, может ли размер моего приложения повлиять на него (это 17,7 МБ). Или это из-за того, что мое тестовое устройство устарело (HTC Desire HD) и немного разбито с большим количеством данных?

Или это нормальное поведение? Или, может быть, проблема в моем коде, который находится ниже ...

Часть манифеста:

<activity android:name=".SplashView" 
      android:noHistory="true" 
      android:screenOrientation="portrait" 
      android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <activity 
     android:name=".MainActivity" 
     android:label="@string/app_name" 
     android:screenOrientation="portrait" 
     android:windowSoftInputMode="adjustPan" 
     android:configChanges="orientation" > 
     <intent-filter > 
      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity> 

Всплеск активности:

public class SplashView extends SherlockActivity { 
private final int SPLASH_DISPLAY_LENGHT = 1000; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    getSupportActionBar().hide(); 
    setContentView(R.layout.splash_view); 
    try { 
     RefreshRatingsTask urt = new RefreshRatingsTask(); 
     urt.execute(); 
    } catch (Exception e) { 
     // ignore 
    } 
    new Handler().postDelayed(new Runnable() { 

     @Override 
     public void run() { 
      Intent mainIntent = new Intent(SplashView.this, 
        MainActivity.class); 
      SplashView.this.startActivity(mainIntent); 
      SplashView.this.finish(); 
     } 

    }, SPLASH_DISPLAY_LENGHT); 
} 
} 

благодаря

+0

Я думаю, что это сочетание старого устройства + тяжелого приложения. Раньше это происходило на моей Motorola Spice, когда я открывал Angry Birds на нем - белый экран, как 20 секунд. – Renan

ответ

9

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

Уменьшение размера вашего приложения поможет сократить продолжительность ожидания и использование темы для установки стиля заставки сделает ее менее заметной.

This blog post автор: Кирилл Моттье имеет более подробную информацию.

0
RefreshRatingsTask urt = new RefreshRatingsTask(); 
    urt.execute(); 

Это Кажется, что аскрипт является виновником. Его работа может занять некоторое время, поэтому экран заставки не появится сразу. Прокомментируйте это и проверьте еще раз.
Кроме того, не очень хорошая практика делать тяжелые вещи на брызгах. Создайте для него сервис и сделайте это в фоновом режиме.

+0

Спасибо за ваш ответ. Btw, RefreshRatingTask расширяет AsyncTask, поэтому он не должен быть проблемой, поскольку он работает в отдельном потоке. Но все же после комментирования, такая же проблема .. – user2224342

+0

благодарит за отзыв. Да, я знал, что это асинктас. Вы тестировали его на других устройствах? Эмулятор? Является ли результат тем же. –

+0

да .. такой же проблема на Samsung S3. я думаю, мне нужно выяснить, как улучшить скорость приложения и уменьшить его размер – user2224342

Смежные вопросы