Один из способов сделать это - установить представление контента в onCreate()
, затем выполнить всю загрузку в асинхронной задаче, а когда это закончится, загрузить «реальный» макет в onPostExecute. Проверить http://developer.android.com/reference/android/os/AsyncTask.html
Таким образом, вы загружаете свой «реальный» макет, когда он фактически завершает загрузку, а не выбирает общее время для переключения видов. Это, конечно, при условии, что вы хотите загрузочную страницу, а не заставку. Если вы хотите, проверьте другие ответы.
Вот краткий пример ... Допустим, у вас есть файл с именем Hello.java .. Вы установили бы свой контентный макет в свой загрузочный макет в OnCreate()
, а затем вызвали этот класс с чем-то вроде .. new DownloadFilesTask().execute();
put этот частный класс в нем ...
private class DownloadFilesTask extends AsyncTask<String, String, String> {
protected Long doInBackground(String... params) {
//grab stuff from the server, compute pi to 100000 places etc.
}
public void onPostExecute(String result) {
//this will now switch us to our real layout, you can now do all your fancy UI stuff! :)
setContentView(R.layout.reallayout);
}
}
В основном это многопоточность простым способом. onPostExecute
запускается обратно в потоке пользовательского интерфейса (ваш основной), в то время как doInBackground
делает все в отдельном потоке, поэтому никаких черных экранов! Я действительно призываю вас не использовать Runnable
в этой ситуации.