Xamarin.Forms - Android Activity 使用异步 OnCreate 方法
Xamarin.Forms - Android Activity with async OnCreate method
如果将 FormsAppCompatActivity.OnCreate(Bundle bundle)
标记为异步有问题,我会 运行 提问吗?我必须从 AWS DynamoDB 中获取特定于用户的数据,并且我需要先从 Akavache 缓存中检索用户,以便使用 userId 进行查询。当然,我也可以将userId保存到本地设置或序列化整个用户对象,以便能够同步检索它。
我也不希望在启动期间出现性能问题,因为使用 SQLite 的缓存肯定存在。唯一的问题是,要么我等待 Akavache 的 GetObject<T>(string key)
并因此将所有内容标记为 OnCreate
为异步,要么我订阅返回的 Observable 并且以下方法将尝试在没有有效的情况下查询用户数据userId,因为Observable还没有返回。
由于您使用 XF 进行开发,MainActivity
的 OnCreate
中的代码 LoadApplication(new App());
会将生命周期事件挂接到 App
中的生命周期事件 PCL。
你没有post任何代码,我猜你把你的数据获取代码放在LoadApplication(new App());
之后,然后就像你说的那样return,否则行为应该不同。
我建议您在 PCL 的 App
的 OnStart()
中调用您的任务,并一起使用 DependencyService 调用您的异步任务以从 PCL.
如果将 FormsAppCompatActivity.OnCreate(Bundle bundle)
标记为异步有问题,我会 运行 提问吗?我必须从 AWS DynamoDB 中获取特定于用户的数据,并且我需要先从 Akavache 缓存中检索用户,以便使用 userId 进行查询。当然,我也可以将userId保存到本地设置或序列化整个用户对象,以便能够同步检索它。
我也不希望在启动期间出现性能问题,因为使用 SQLite 的缓存肯定存在。唯一的问题是,要么我等待 Akavache 的 GetObject<T>(string key)
并因此将所有内容标记为 OnCreate
为异步,要么我订阅返回的 Observable 并且以下方法将尝试在没有有效的情况下查询用户数据userId,因为Observable还没有返回。
由于您使用 XF 进行开发,MainActivity
的 OnCreate
中的代码 LoadApplication(new App());
会将生命周期事件挂接到 App
中的生命周期事件 PCL。
你没有post任何代码,我猜你把你的数据获取代码放在LoadApplication(new App());
之后,然后就像你说的那样return,否则行为应该不同。
我建议您在 PCL 的 App
的 OnStart()
中调用您的任务,并一起使用 DependencyService 调用您的异步任务以从 PCL.