我有一个处理推送通知的服务。当应用程序运行时,一切都很好,但一旦应用程序未运行,我将获得空引用异常。我已将其追溯到以下行:
newIntent = Mvx.Resolve<IMvxAndroidViewModelRequestTranslator> ().GetIntentFor (request);
此行用于获取状态栏通知的意图,因此当用户点击它时,它会将他带到应用程序内的相应页面。我很确定这是null,因为应用程序没有运行,并且MvvmCross框架没有机会初始化和注册IMvxAndroidViewModelRequestTranslator。
我的问题是我应该使用什么作为替代方案?
更新 所以我不喜欢阅读,我相信一个常规的意图不会工作,打破我的应用程序。我正在考虑创建一个虚拟活动在我的应用程序中,它将获得我将发送的常规意图并继续使用IMvxAndroidViewModelRequestTranslator(自应用程序启动后应该不为null)并创建MvvmCross导航请求。
有什么想法吗?
更新2 尝试上面的方法没有运气......仍然在同一条线上失败......
所以基本上问题是如何在启动MvvmCross生态系统的同时从状态栏启动应用程序......
由于
阿米特
答案 0 :(得分:0)
所以我最终做的是一旦通知到达并且Mvx.Resolve抛出异常I(意味着应用程序未运行),我将通知数据保存到应用程序首选项并将应用程序启动到其主要活动,在那里我简单地检查了通知数据,如果它存在,我导航到适当的活动。
答案 1 :(得分:0)
当Android UI启动时,MvvmCross会运行Setup
来初始化IoC,您的应用程序等内容
如果您需要在非UI设置中初始化MvvmCross应用程序,请尝试MvvmCross DataService in an Android Broadcast listener中的答案,该答案显示如何访问UI使用的相同设置。