在安卓设备上,启动画面出现之前会出现黑屏。

13 浏览
0 Comments

在安卓设备上,启动画面出现之前会出现黑屏。

我们知道当应用程序执行一些长时间的过程,比如从互联网下载一些信息,它可以在加载应用程序之前显示一个启动画面,并且当应用程序完全加载后,它将显示主页面。

在启动画面活动中,我们必须在线程中加载长时间的过程,以避免在加载应用程序之前显示黑屏。

我已经做了所有这些,但是在显示应用程序之前仍然出现了黑屏。

这是启动画面活动的onCreate方法:

protected override void OnCreate (Bundle bundle)
{
    try {
        base.OnCreate (bundle);
        //_dt = DateTime.Now.AddSeconds (_splashTime);
        SetContentView (Resource.Layout.Splash );
        FirstLoadPB= FindViewById (Resource .Id.FirstLoadPB );
        FirstLoadingInfo= FindViewById (Resource .Id.FirstLoadInfo );
        LoadApplication ();
    } catch (System.Exception ex) {
        Common.HandleException (ex);
    }
}

这是`LoadApplication`方法的代码:

public void LoadApplication()
{
    new System.Threading.Thread (new ThreadStart (() =>
                                                  {
    //一些加载应用程序的代码-从网上下载和访问存储(因为代码很多-大约100行-我已经清理了它们)。
    }
    )
                                 ).Start ();
}

我不明白为什么会出现黑屏,以及如何避免这种情况。

我的应用程序类的oncreate方法中有一些访问存储的代码。也许问题的根源就是从那里开始的。因此,我分享了它的代码:

public override void OnCreate ()
{
    try {
        base.OnCreate ();
        _typeOfShow = new MapViewType ();
        ListingTypes = new Dictionary ();
        OfflineMode =false;
        PropertyShowWasShown = false;
        MeasutingUnitsChanged =false;
        if(RplXmlSettings .Instance .getVal (AppConstants .XmlSettingShowOnCurrentLocationKey  )== "True")
            typeOfShow .ShowOnCurrentLocation =true ;
        else
            typeOfShow .ShowOnCurrentLocation =false;
        //StorageClass .ctx = ApplicationContext ;
        FillDashboardOnResume =false;
        //initlize image loader 
        ImageLoader = Com.Nostra13.Universalimageloader.Core.ImageLoader.Instance;
        Options = new DisplayImageOptions.Builder ()
            .ShowImageForEmptyUri (Resource.Drawable.ic_tab_map)
                .CacheOnDisc ()
                .CacheInMemory ()
                .ImageScaleType (ImageScaleType.InSampleInt)
                .BitmapConfig (Bitmap.Config.Rgb565)
                .Displayer (new FadeInBitmapDisplayer (300))
                .Build ();
        ImageLoaderConfiguration config;
        ImageLoaderConfiguration .Builder builder =new ImageLoaderConfiguration
            .Builder (ApplicationContext).ThreadPoolSize (3);
        if(RplXmlSettings .Instance .getVal (AppConstants .XmlSettingMemoryCacheKey )== "True")
            builder .ThreadPriority (4).MemoryCacheSize (1500000) ;// 1.5 Mb
        builder .
            DenyCacheImageMultipleSizesInMemory ().
                DiscCacheFileNameGenerator (new Md5FileNameGenerator ()).
                MemoryCache (new WeakMemoryCache()).
                DiscCacheSize (15000000);
        config = builder .Build ();
        ImageLoader.Init (config);
    } catch (Exception ex) {
        Common .HandleException (ex);
    }
}

好的,长话短说,现在问题是-真正的黑屏的根本原因是什么。这是来自启动画面活动还是应用程序类。我们如何解决它并避免显示这个?

0