如何在没有启动活动的情况下初始化MvvmCross框架?

Jas*_*ele 3 c# xamarin.android mvvmcross

在我的应用程序中,我正在创建一个广播接收器,它将监听网络变化.在OnReceive中,它将检查设备是否刚刚连接到WiFi,然后在后台开始上传.将不会显示任何活动,因此在没有启动活动的情况下初始化框架需要做什么?我不需要框架的任何页面导航部分,因此精简初始化将是最佳的.

    private override void OnReceive(Context context, Intent intent)
    {
        bool isWifiConnected = false;
        bool isMobileConnected = false;

        if (intent.Action.Equals(ConnectivityManager.ConnectivityAction))
        {
            NetworkInfo networkInfo = (NetworkInfo)intent.GetParcelableExtra(ConnectivityManager.ExtraNetworkInfo);


            if (networkInfo.IsConnected)
            {
                if (networkInfo.Type == (int)ConnectivityType.Wifi)
                {
                    isWifiConnected = true;
                }
                if (networkInfo.Type == (int)ConnectivityType.Mobile)
                {
                    isMobileConnected = true;
                }
            }
        }

        if (isWifiConnected)
        {
            StartUp(); //What do I put in this private method?
        }
Run Code Online (Sandbox Code Playgroud)

Stu*_*art 6

我现在已经对GitHub进行了一些更改,希望能够让你用它的BroadcastReceiver创建你的应用程序.

使用这些修改,您现在可以使用以下代码从任何应用程序组件 - 活动,BroadcastReceiver,服务或ContentProvider初始化核心应用程序:

var setup = MvxAndroidSetupSingleton.GetOrCreateSetup(this.ApplicationContext);
setup.EnsureInitialized(this.GetType());
Run Code Online (Sandbox Code Playgroud)

这些更改应该允许MvvmCross应用程序在"Intent.ActionMain"场景中以及在以下情况下启动:

  • 当应用程序清单中的辅助Intent是请求时
  • 何时请求Service,BroadcastReceiver或ContentProvider组件
  • 当请求重启时,因为Android操作系统之前已经清除了应用程序的内存,但是用户现在已经请求了应用程序(有点像在WP7中进行逻辑删除后的水合作用)

对这些变化的更长篇解释是http://slodge.blogspot.co.uk/2012/05/android-application-initialization-and.html