Activityindicator在Xamarin.forms中停止旋转

时间:2017-03-01 05:26:25

标签: c# android xamarin.forms

我想在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;
    }

1 个答案:

答案 0 :(得分:0)

你试图获得不是为此而构建的东西。当您使用长时间运行的任务阻止主线程时,您无法告诉主线程他应该创建您的活动指示器...为什么他应该这样做?他忙于长期任务。

您有两种选择:

1)不要在主线程上执行长时间运行的任务(这是推荐的方式)

2)不要显示动画(如活动指示器),只是向用户显示一条静态信息“这可能需要一段时间......耐心等待。”

但我强烈建议您不要选择2.为什么?当您长时间阻止主线程时,Android系统会检测到您的应用没有响应,并且可能会向用户显示消息,例如“应用未响应。您要等待还是取消?”。特别是当主线程被阻塞并且用户点击它几次时......