我想在xamarin.forms中使用activityindicator,Activityindicator在屏幕中间成功显示,但旋转动画停止(卡住),已经完成了一些文章,但它没有帮助。我还没有测试过其他设备,但它在Android中不起作用。这是代码 -
private async Task<string> getUrlString(string id)
{
string url = doSomeWork(id);\\its a long running process where it \\takes around 10 minutes to run,And I cant do it in background for some reasons
return url;
}
async void Handle_ItemSelected(object sender, Xamarin.Forms.SelectedItemChangedEventArgs e)
{
await DisplayAlert("", "something", "OK");
activityindicator.IsRunning = true;
await Task.Delay(250); int id=1;
var url =await getUrlString(id);
await Navigation.PushModalAsync(new playerPage());
activityindicator.IsRunning = false;
}
答案 0 :(得分:0)
你试图获得不是为此而构建的东西。当您使用长时间运行的任务阻止主线程时,您无法告诉主线程他应该创建您的活动指示器...为什么他应该这样做?他忙于长期任务。
您有两种选择:
1)不要在主线程上执行长时间运行的任务(这是推荐的方式)
2)不要显示动画(如活动指示器),只是向用户显示一条静态信息“这可能需要一段时间......耐心等待。”
但我强烈建议您不要选择2.为什么?当您长时间阻止主线程时,Android系统会检测到您的应用没有响应,并且可能会向用户显示消息,例如“应用未响应。您要等待还是取消?”。特别是当主线程被阻塞并且用户点击它几次时......