如何在App类的OnResume方法中获取AppDelegate.cs传递的参数值?
结论
完全可以实现。SetValueForKey是给NSObject对象添加关联键值的方法,只要AppDelegate实例没有被销毁,存储的键值就会一直存在,App的生命周期和iOS端的AppDelegate生命周期完全同步,加上你已经将AppDelegate实例传入App构造函数,直接持有该实例调用对应取值方法即可,具体实现步骤如下:
实现步骤
- 首先在共享项目的
App类中定义私有字段存储传入的AppDelegate实例,构造函数中完成赋值:
public partial class App : Application { // 存储原生AppDelegate实例 private readonly AppDelegate _nativeAppDelegate; public App(AppDelegate appDelegate) { InitializeComponent(); _nativeAppDelegate = appDelegate; MainPage = new MainPage(); } }
- 重写
OnResume方法时,调用ValueForKey方法取出之前存储的值即可:
protected override void OnResume() { base.OnResume(); // 取出存储的键值 var storedValue = _nativeAppDelegate.ValueForKey(new Foundation.NSString("key"))?.ToString(); // 后续可直接使用storedValue,此处取到的值就是你之前设置的"text" }
注意事项
- 存取时使用的key字符串必须完全一致,否则会取不到值
- 取值后建议做空判断,避免空引用异常
- 如果你后续需要跨重启场景存储该值,也可以替换为
NSUserDefaults进行持久化存储,存取逻辑类似
内容的提问来源于stack exchange,提问作者alexandr f
相关产品推荐
相关产品推荐

