Как разрешить зарегистрированные сервисы (рабочие объекты) в сервисе Android с помощью mvvmcross?
Я пытаюсь использовать mvvmcross в службе Android, это код:
public interface IMyWorkerObject
{
void ShowNotificationIcon();
}
[Service]
public class MyAndroidService : Service
{
private Thread myThread;
public override void OnCreate()
{
myThread = new Thread(() =>
{
do
{
var myWorkerObject = Mvx.Resolve<IMyWorkerObject>();
myWorkerObject.ShowNotificationIcon();
Thread.Sleep(10000);
} while (true);
});
myThread.IsBackground = true;
myThread.Start();
base.OnCreate();
}
public override StartCommandResult OnStartCommand(Intent intent, StartCommandFlags flags, int startId)
{
return StartCommandResult.Sticky;
}
public override void OnDestroy()
{
if (myThread != null)
{
if (myThread.IsAlive)
myThread.Abort();
myThread = null;
}
}
public override IBinder OnBind(Intent intent)
{
return null;
}
}
и у меня есть этот код в моем app.cs
public class App : MvxApplication
{
// ... some code ...
public override void Initialize()
{
base.Initialize();
//Initializing Plugins..
PluginLoader.Instance.EnsureLoaded();
//Initializing Work Objects..
var services = CreatableTypes()
.EndingWith("Service");
// start android service
var context = Application.Context;
var intent = new Intent(Application.Context, typeof(MyAndroidService ));
context.StartService(intent);
//Initializing Start Navigation
RegisterAppStart<MainViewModel>();
}
// ... some code ...
}
все работает нормально, пока я полностью не закрою приложение, из-за возврата StartCommandResult.Sticky
служба Android перезапускается, но выдает исключение в var myWorkerObject = Mvx.Resolve<IMyWorkerObject>();
в OnCreate
метод:
Ошибка: System.NullReferenceException: ссылка на объект не установлена на экземпляр объекта в Cirrious.CrossCore.Mvx.Resolve[IMyWorkerObject] () [0x00000] в: 0 в App1.MyAndroidService.b__0 () [0x00000] в: 0
Что я делаю не так, или лучше сказать, есть ли примеры того, как использовать службы Android с mvvmcross?