如何更新没有Xamarin的Android阻止来自用户输入的用户界面?

问题描述 投票:1回答:1

我的应用程序采取用户输入时的listview被加载,backpress和按钮,当这种情况发生不工作受阻。

public void OnAnimationEnd(Animation animation)
{
       Task.Run(() => RunOnUiThread(dodo));
}

下面的代码运行的动画结束时

public void dodo()
{
        AdRequest adRequest = new AdRequest.Builder().AddTestDevice(AdRequest.DeviceIdEmulator).Build();
        adView.LoadAd(adRequest);
        AccessFiles();

        adapter = new MyArryAdapter(this, Resource.Layout.AdaptView, CustomView.multipleData.ToList());
        listView.Adapter = adapter;


        adapter.NotifyDataSetChanged();
        pb.Visibility = ViewStates.Gone;
}
c# android xamarin asynchronous xamarin.android
1个回答
0
投票

试试这个(我的道歉,我没有时间在此刻来测试它,因为我希望通过问题,而我等待构建完成):

public async void OnAnimationEnd(Animation animation)
{
    await Task.Run(() => Dodo()).ConfigureAwait(false);
    RunOnUIThread(AssignDodoAdapter());
}

void Dodo()
{
    AdRequest adRequest = new 
 AdRequest.Builder().AddTestDevice(AdRequest.DeviceIdEmulator).Build();
    adView.LoadAd(adRequest);
    AccessFiles();
    adapter = new MyArryAdapter(this, Resource.Layout.AdaptView,  CustomView.multipleData.ToList());
}

void AssignDodoAdapter()
{
    listView.Adapter = adapter;
    adapter.NotifyDataSetChanged();
    pb.Visibility = ViewStates.Gone;
}

注:我假设,适配器,列表视图等被暴露时可参考的,因为你的代码示例中的字段。

OnAnimationEnd()应标明异步。它应该运行在后台(非UI)线程允许其他事件在UI线程中处理在突突()的代码,但因为是期待已久的,它不会继续到下一个代码块。一旦任务完成后,应该再运行在UI线程中AssignDodoAdapter()的代码。

© www.soinside.com 2019 - 2024. All rights reserved.