2013-11-21 79 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