我在我的 xamarin 表单项目(android 和 ios)上使用 ShowLoading() Acr UserDialogs (v5.2.2),但我不会在启动 await 方法之前启动加载器并在结束时隐藏加载器。
我的代码在 ios 上运行,但在 android 上没有任何反应。
例子
async Task MyMethod()
{
UserDialogs.Instance.ShowLoading("Loading",MaskType.Black);
await ViewModel.LoadData();
UserDialogs.Instance.HideLoading();
}
//InsideViewModel
public async Task LoadData();
{
await Task.Yield(); //without this code and ios doesnt work
//download data
}
我在 MainActivity.cs 上为 android UserDialogs.Init(this) 添加
有什么帮助吗? 谢谢
最佳答案
我编写了一些代码,速度非常快,并且与 Acr 用户对话框完美配合。
我使用依赖服务,这是我的完整示例代码。
PCL代码
void CallService ()
{
Device.BeginInvokeOnMainThread (() => UserDialogs.Instance.ShowLoading ("Loading ...", MaskType.Black));
Task.Run (async () => {
await DependencyService.Get<IJsonMethods> ().Load ("SERVICE_URL");
}).ContinueWith (result => Device.BeginInvokeOnMainThread (() => {
UserDialogs.Instance.HideLoading ();
}
})
);
}
界面
public interface IJsonMethods
{
Task Load(string url);
}
依赖服务
public async Task Load (string url)
{
try{
using (var http = new HttpClient (new NativeMessageHandler ())) {
var x = await http.GetAsync (new Uri (url));
string res = await x.Content.ReadAsStringAsync ();
MainViewModel.JsonList = JsonConvert.DeserializeObject<ArticleClass.RootObject> (res);
}
}catch (Exception ex) {
MainViewModel.JsonList = null;
}
}
关于c# - 显示 Acr 用户对话框加载程序直到方法 xamarin 表单结束(android),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37832860/