2016-10-04 69 views
1

我的启动画面活动在从我的IDE执行时运行完美,但是当我从移动设备启动应用程序时,它无法显示启动画面活动。当我的应用程序从设备启动时,为什么我的Android启动画面不能执行?

飞溅活动:

namespace ICA_Deliveries 
{ 
[Activity(Label = "ICA Deliveries", MainLauncher = true, NoHistory = true, Icon = "@drawable/icaswift")] 
public class Splash : Activity 
{ 
    protected override void OnCreate(Bundle savedInstanceState) 
    { 
     base.OnCreate(savedInstanceState); 

     RequestWindowFeature(WindowFeatures.NoTitle); 

     // Set our view from the "Splash" layout resource 
     SetContentView(Resource.Layout.Splash);  

    } 

    protected override void OnResume() 
    { 
     base.OnResume(); 

     Task startupWork = new Task(() => {    
      Task.Delay(1000); // Simulate a bit of startup work    
     }); 

     startupWork.ContinueWith(t => { 
      Task.Delay(3000).Wait(); 
      StartActivity(new Intent(this, typeof(MainActivity))); 
     }, TaskScheduler.FromCurrentSynchronizationContext()); 

     startupWork.Start(); 
    }  
    } 
} 
+0

确保您已设置为在清单中启动splash活动。它可能仍然设置为从用于启动项目的模板启动原始活动。 – TheAnonymous010

+0

@ TheAnonymous010是的,但Xamarin在启动时会自动生成Manifest,所以应该在我的activity属性中正确配置。难道这只是我的adb设备的一个错误?我正在使用Nexus 6p – Jb11281992

+0

https://developer.xamarin.com/guides/android/advanced_topics/working_with_androidmanifest.xml/#Launchable_from_Application_Chooser解释自动生成的清单 – Jb11281992

回答

1

我有同样的问题,对于一些设备飞溅不能正常工作。
从您的代码中删除与任务相关的代码,并使用Handler等待一段时间并转到下一个屏幕。
以下代码正在为我工​​作。

public class SplashActivity : Activity 
{ 


    protected override void OnCreate (Bundle savedInstanceState) 
    { 
     base.OnCreate (savedInstanceState); 

     SetContentView (Resource.Layout.splash); 

     Handler handler = new Handler(); 
     handler.PostDelayed (gotoMainActivity, 1000); 

    } 

    public void gotoMainActivity() 
    { 

      var intent = new Intent (this, typeof (MainActivity)); 
      StartActivity (intent); 
      Finish(); 

    } 
} 
相关问题