我正在迎合两种特定情况
由于我需要自定义View的加载方式,我已经实现了自定义视图展示器(MvxAndroidViewPresenter),请参阅SplitViewPresenter presentation
对于方案2,我在Request中传递一些PresentationValues,表示我想在显示LoginView时做一些不同的事情
if (request.PresentationValues != null && request.PresentationValues.ContainsKey(MakeViewTopHint.HintName))
{
intent.AddFlags(ActivityFlags.NewTask);
intent.AddFlags(ActivityFlags.ClearTask);
}
这会导致堆栈被解开并显示LoginView。大。
对于场景1,我使用BroadcastReceiver来捕获Intent,ActionScreenOff。然后我尝试显示之前使用NewTask和ClearTask显示的相同Activity。
如果我删除用于场景2的NewTask和ClearTask标志但是我需要它们来清除后面的堆栈,那么场景1工作正常。
有谁知道为什么使用NewTask和ClearTask会阻止随后显示活动
答案 0 :(得分:0)
问题是MVVMCross的MvxAndroidViewsContainer.AdjustIntentForPresentation。它在用于场景1的Intent上设置NewTask ActivityFlag。
公平地说,这可能是一个很好的理由,但是当NewTask用于在以前使用NewTask和ClearTask启动该Activity之后启动一个Activity时,它将无法解析并且不会显示Activity。
感谢MVVMCross'几乎无限的可配置性,我能够创建一个自定义的AndroidViewsContainer。在播放场景1时,我确保不使用NewTask标志,一切正常。
ActivityFlags.NewTask阻止Activity被解决的问题不是MVVM交叉或Xamarin的事情,因为我现在可以复制,我认为这是奇怪的行为,在vanilla Android中。
我现在有两个方案的工作解决方案