Это решение дает вам следующее:
- Немедленное отображение заставки
- Удаление заставки точно в то время, когда запускается «основное» действие (основное действие заменяетвсплеск активности)
В OnCreate вызывается SetContentView, чтобы вызвать экран-заставку, а затем запускается рабочий поток, запускающий процесс инициализации данных с медленной обработкой.
ThisКстати, экран spalsh отображается без задержки.Последний оператор в рабочем потоке запускает «основное» приложение / действие, которое будет иметь доступ к своей базе данных и данным.Вызов StartActivity () из OnCreate (т. Е. После initializeDataWorker.Start ()) заставит MainActivity работать до / во время создания БД и / или выборки данных, что обычно нежелательно).
В этом решении отсутствует способ удаления заставки с заднего стека.Когда я доберусь до реализации этой функциональности, я обновлю ее.
namespace Mono.Droid
{
[Activity(
Label = "Splash Activity",
MainLauncher = true,
Theme = "@android:style/Theme.Black.NoTitleBar",
Icon = "@drawable/icon",
NoHistory = false)]
public class SplashActivity : Activity
{
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.SplashLayout);
Thread initializeDataWorker = new Thread(new ThreadStart(InitializeData));
initializeDataWorker.Start();
}
private void InitializeData()
{
// create a DB
// get some data from web-service
// ...
StartActivity(typeof(MainActivity));
}
}
}