我在我的應用程序中創建了一個服務,用於偵聽來自GCM的推送通知。當應用程序關閉並收到通知時,MvvmCross如何在通知服務中初始化?
服務的OnMessage
方法在我測試過的所有場景中被正確調用:應用程序在前臺運行,應用程序在後臺運行,應用程序未運行。但是,當應用程序未運行時,當我嘗試使用Mvx.Resolve
解決依賴關係時,代碼將拋出NullReferenceException
。
Unhandled Exception:
System.NullReferenceException: Object reference not set to an instance of an object
at Cirrious.CrossCore.Mvx.Resolve[IRepository]() [0x00000] in <filename unknown>:0
at MyApp.Android.Notifications.GcmService+<OnMessage>d__3.MoveNext() [0x00000] in <filename unknown>:0
Process my.app.droid (pid 7846) has died.
看來,由於應用程序沒有運行,則Setup
類尚未執行和IoC容器不知道如何解決我的類型。或者,更糟糕的是,Mvx
類尚未初始化。
我似乎無法在網上找到關於如何解決此問題的文檔。
我是否運氣不好,必須嘗試啓動我的應用程序,通知中發送了哪些信息,並且只有在應用程序完全啓動後才執行我的IRepository
上的操作?
或者有什麼方法可以確保Mvx
在應用程序關閉時運行的服務被系統激活時正確初始化?這當然是更好的選擇,因爲我可能會在其他後臺服務中遇到此問題,這些服務正在監聽Internet訪問更改或位置更改。
像http://stackoverflow.com/questions/17466140/mvvmcross-initialization這樣的問題可能有幫助 – Stuart