Xamarin服务和表单初始化

时间:2018-12-12 11:01:26

标签: c# android sqlite xamarin sqlite.net

我正在编写一个Xamarin Android应用程序,该应用程序由服务和用于配置的页面组成。 该服务在设备启动(由 BroadcastReceiver 启动)之后启动,并且需要数据库连接才能读取配置。 服务尝试读取数据库时收到错误消息:

  

您必须调用Xamarin.Forms.Init();在使用它之前。

对于数据库连接,我使用的是 SQLite.Net 。 我知道我需要调用 Xamarin.Forms.Init()来使用数据库,但是我不知道该怎么做。 Init()方法需要上下文和 Android.OS.Bundle 作为输入,但是在BroadcastReceiver类中,我只有上下文。如何获取捆绑包?还有另一种方法吗?

这是异常堆栈跟踪:

at Xamarin.Forms.Device.get_PlatformServices () 
  at Xamarin.Forms.Device.GetAssemblies () 
  at Xamarin.Forms.DependencyService.Initialize () 
  at Xamarin.Forms.DependencyService.Get[T] (Xamarin.Forms.DependencyFetchTarget fetchTarget) 
  at MyProject.Database.ConfigurationDBService..ctor () 
  at MyProject.Utils.ConfigurationUtils.getConfig () 
  at MyProject.InvoiceUploadService.OnStartCommand (Android.Content.Intent intent, Android.App.StartCommandFlags flags,System.Int32 startId)

2 个答案:

答案 0 :(得分:0)

我按照问题注释中的SushiHangover的建议,通过在没有DependecyService的情况下运行数据库连接来解决了这个问题。

答案 1 :(得分:-1)

输入:

Xamarin.Forms.Init();

在Android Project中的MainActivity.cs类中。