Intereting Posts
Как проверить, запущена ли задача Async Разрешение ATTR {idVendor} для USB-устройств на linux mint для использования таблицы mobii protab2 XXL В каком формате контакты хранятся в android? YouTubePlayer не загружает рекламное видео с помощью cueVideo () Эквивалент Android для обозревателя View.getX () перед API 11? Android, Как обрабатывать изменения в сети (от GPRS до Wi-Fi и наоборот) при опросе данных Как установить фоновое изображение в android Как проверить предыдущее значение в android viewflipper Как использовать цвет как образ заполнителя с Picasso? Настройка textSize программно Как хранить и извлекать изображения в базе данных Androidite SQL и отображать их на gridview Android: маржа между значком ActionBar и выпадающим меню «Навигация» изменяется при нажатии на поиск Динамическое отображение графика в Android Невозможно построить успешную ошибку проекта corova при выполнении команды ant debug Сделать веб-просмотр в планшете симулировать небольшое устройство

Как избежать черного экрана перед запуском?

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

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.loadpage); //get rid of title bar getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setRequestedOrientation(1); } @Override public void onResume() { super.onResume(); words = WordList.sharedWordList(this); if(generatedLevels==null) { generatedLevels = new ArrayList<PuzzleMZLen>(); } if(!p.isAlive()) { p.start(); } Intent i = new Intent(getApplicationContext(), Main.class); startActivity(i); } 

заранее спасибо

Solutions Collecting From Web of "Как избежать черного экрана перед запуском?"

Вы должны использовать AsyncTask для такой работы. Ваш макет заполняется после завершения загрузки. Так вы смотрите на черный экран.

Используйте onPreExecute класса AsyncTask чтобы отобразить индикатор выполнения. И напишите код загрузки в методе doInBackground .

Определенно используйте AsyncTask для этого. У меня было то же самое для моего приложения, и вот мой код:

 private class getAllData extends AsyncTask<Context, Void, Cursor> { protected void onPreExecute () { dialog = ProgressDialog.show(Directory.this, "", "Loading. Please wait...", true); } @Override protected Cursor doInBackground(Context... params) { DirectoryTransaction.doDepts(); return null; } protected void onPostExecute(Cursor c) { for(int i = 0 ; i < DeptResults.length ; i++){ deptsAdapter.add(DeptResults[i][0]); } dialog.dismiss(); } } 

Метод onPreExecute загружает ProgressDialog, который показывает «Загрузка. Подождите …». doInBackground делает то, что делает загрузку моего приложения (в моем случае захватывает и анализирует текст с сервера), а затем onPostExecute заполняет счетчик, а затем отклоняет ProgressDialog. Вы хотите, чтобы какая-то вещь отличалась для BAR прогресса, но AsyncTask будет очень похож. Позвоните в onCreate с новым getAllData.execute(this);

Существует хороший способ создания хорошей всплеской активности.

Чтобы предотвратить ANR, вы должны переместить всю загрузку данных за пределы потока пользовательского интерфейса, как было упомянуто в других ответах. Для этого используйте AsyncTask или любой другой тип многопоточности.

Однако, чтобы удалить раздражающий черный экран, который на несколько секунд показывает несколько медленных устройств, вам нужно сделать следующие шаги:

  1. Создайте bg_splash . Он будет отображаться вместо черного фона, как раз вовремя показывает активность пользователю. Например, это может быть логотип бренда на цветном фоне бренда.
  2. Создайте тему заставки и поместите ее в /res/values/themes.xml :

     <?xml version="1.0" encoding="utf-8"?> <resources> <style name="MyApp.Splash" parent="@style/Theme.Sherlock.Light.NoActionBar"> <item name="android:windowBackground">@drawable/bg_splash</item> </style> </resources> 
  3. Не забывайте назначать созданную тему для всплеска активности, обновляя AndroidManifest.xml :

     <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.myapp" android:versionCode="1" android:versionName="1" > ... <application> <activity android:name=".SplashActivity" android:theme="@style/MyApp.Splash" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <activity> ... </application> </manifest>