2013-11-21 43 views
1

我有一个IntentService,它在我的mvvmcross应用程序中调用,并根据AlarmManager定期调用。在服务的OnHandleInit方法我申请一个依赖从MVX:具有依赖注入的Mvvmcross IntentService

protected override void OnHandleIntent(Intent intent) 
{ 
    var ss = Mvx.Resolve<IServerSyncComponent>(); 
    ss.SyncAll(); 
} 

这只要在主应用程序仍在运行工作正常。但是,一旦该应用程序被杀死,代码将抛出一个NullReferenceException。

如何解决这些依赖关系?

+1

does http://stackoverflow.com/questions/19844889/mvvmcross-dataservice-in-an-android-broadcast-listener help? – Stuart

+0

@stuart是的,它帮助。现在工作正常。如果您添加答案,我会接受它。 – Thomas

回答

0

您可以尝试/ catch来查看ss是否为空,然后在它为空时不调用SyncAll()。

var ss = Mvx.Resolve<IServerSyncComponent()>; 
try { 
    ss.SyncAll(); 
} catch (NullReferenceException e) { 
    Console.WriteLine(e.ToString()); 
} 

如果我没有记错的AlarmManager将继续在后台运行,所以你应暂停或停止AlarmManager当您退出应用程序!

+0

我使用AlarmManager的全部原因是因为即使应用程序关闭,它仍会继续运行。我不是机器人专家,我用我能找到的第一件事情为我工作。如果有比AlarmManager更好的解决方案,我很想学习它。 – Thomas