You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MvvmCross 8.0下Resolve<IMvxAndroidCurrentTopActivity>返回Activity为空,与7.0有何改动?

问题原因
  • MvvmCross 8.0重构了Android端Activity生命周期跟踪逻辑,默认不再自动注册MvxAndroidActivityLifecycleCallbacks回调,如果未在自定义MvxAndroidSetup或Application类中手动完成回调注册,框架就无法跟踪当前顶层Activity,最终导致IMvxAndroidCurrentTopActivity解析结果为null。
  • 若在Application OnCreate等应用启动早期阶段调用该解析方法,此时还没有任何Activity完成初始化并挂载到框架的生命周期跟踪栈,也会返回null。7.0版本中框架会提前持有一个临时Activity引用避免该问题,但8.0为了规避内存泄漏风险移除了该逻辑。
  • 如果DialogService是在后台线程、Activity正在执行OnDestroy生命周期的场景下触发解析,8.0会立即清除已销毁Activity的引用,不会像7.0一样保留短时间缓存,也会返回null。
MvvmCross 8.0 相对7.0的相关改动
  • 重构了Android平台Activity跟踪实现,IMvxAndroidCurrentTopActivity不再依赖全局静态缓存,改为完全基于生命周期回调的实时跟踪,彻底解决了旧版该服务持有Activity实例引发的内存泄漏问题。
  • 默认取消了Activity生命周期回调的自动注册逻辑,需要开发者手动完成注册,可在MvxAndroidSetup的InitializePlatformServices方法中执行注册,也可以在Application的OnCreate方法中添加如下代码:
RegisterActivityLifecycleCallbacks(new MvxAndroidActivityLifecycleCallbacks());
  • 调整了IMvxAndroidCurrentTopActivity的IoC注册时机,从框架启动阶段延后到首个Activity初始化完成之后,启动阶段解析会直接返回null。
  • 移除了IMvxAndroidCurrentTopActivity的降级回退逻辑,无活跃顶层Activity时直接返回null,不再返回栈中最近的已销毁Activity实例。

内容的提问来源于stack exchange,提问作者Stefano Paparesta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 01:06:03