Xamarin.Forms - 使用异步OnCreate方法进行Android活动

时间:2017-08-07 17:31:54

标签: asynchronous android-activity xamarin.android xamarin.forms akavache

如果将FormsAppCompatActivity.OnCreate(Bundle bundle)标记为异步是一个问题,我是否会遇到问题?我必须从AWS DynamoDB获取用户特定的数据,我需要先从Akavache缓存中检索用户,然后才能使用userId进行查询。当然,我也可以将userId保存到本地设置或序列化整个用户对象,以便能够同步检索它。

我也不希望在启动期间出现性能问题,因为缓存使用SQLite肯定存在。唯一的问题是我等待Akavache的GetObject<T>(string key),因此,将所有内容标记为OnCreate async,或者我订阅返回的Observable,以下方法将尝试查询用户没有有效userId的数据,因为Observable还没有返回。

1 个答案:

答案 0 :(得分:1)

由于您正在使用XF进行开发,LoadApplication(new App());的{​​{1}}中的代码OnCreate会将生命周期事件挂钩到PCL中的MainActivity生命周期事件。

您没有发布任何代码,我猜您在App之后放置了数据提取代码,然后正如您所说它还没有返回,否则行为应该是不同的。

我建议您在PCL的LoadApplication(new App()); OnStart()中调用您的任务,并使用DependencyService调用异步任务从PCL获取数据。