zoukankan      html  css  js  c++  java
  • Xamarin.Android 使用AsyncTask提示上传动态

      我们有时候会通过WebServices上传数据,如果信息量过大并没有提示,用户会觉得是死机,或是系统崩溃,这时候我们可以用到AsyncTask(异步任务)来提示上传信息,例如:正在上传数据...

      这里是官方对AsyncTask的详细文档:https://developer.xamarin.com/api/type/Android.OS.AsyncTask/

      下面是我对AsyncTask的了解:首先实例化继承AsyncTask的类InitTask(当然这里可以随便命名) --> 接着开始执行任务 OnPreExecute 方法 --> 后台执行任务 DoInBackground 方法 -->  执行后返回 OnPostExecute ,简单使用调用这几个方法就足够了,哪里不足希望大佬补充。

    using Android.App;
    using Android.Widget;
    using Android.OS;
    using System.Threading;
    
    namespace AsyncTaskDemo
    {
        [Activity(Label = "AsyncTaskDemo", MainLauncher = true)]
        public class MainActivity : Activity
        {
            protected override void OnCreate(Bundle savedInstanceState)
            {
                base.OnCreate(savedInstanceState);
    
                // Set our view from the "main" layout resource
                SetContentView(Resource.Layout.Main);
                Button btn = FindViewById<Button>(Resource.Id.button1);
    
                btn.Click += (s, e) =>
                {
                     new InitTask(this).Execute();      //调用异步任务
                };
            }
    
            //开启一个线程,沉睡10秒,模拟上传数据
            void TestThead()
            {
                Thread.Sleep(10000);
            } 
    
    
            private class InitTask : AsyncTask<Java.Lang.Void, Java.Lang.Void, string[]>
            {
    
                MainActivity main;
                ProgressDialog proDialg = null;
    
                public InitTask(MainActivity _main)
                {
                    main = _main;
                }
    
                protected override string[] RunInBackground(params Java.Lang.Void[] @params)
                {
                    //throw new NotImplementedException ();
                    return null;
                }
    
                //后台要执行的任务
                protected override Java.Lang.Object DoInBackground(params Java.Lang.Object[] @params)
                {
                    main.TestThead();
                    return "OK";
                }
    
                //执行后返回
                protected override void OnPostExecute(Java.Lang.Object result)
                {
                    proDialg.Cancel();
                    if (result.ToString() != "OK")
                        Toast.MakeText(main, "获取数据失败!", ToastLength.Short); 
                }
    
                //开始执行任务
                protected override void OnPreExecute()
                {
                    proDialg = new ProgressDialog(main);
                    proDialg.SetProgressStyle(ProgressDialogStyle.Spinner);
                    //设置界面不可操作 返回键有效
                    //proDialg.SetCanceledOnTouchOutside(false);
                    proDialg.SetMessage("正在上传数据...");
                    //设置界面不可操作 返回键无效     
                    proDialg.SetCancelable(false);
                    proDialg.Show();
                }
            }
        }
    }

    最后附上下载地址:

      链接: https://pan.baidu.com/s/1u5TNukLQH5ycjBMWs4ZzLg

      密码: w7q6

  • 相关阅读:
    Python 时间类型及其互相转换
    SQLAlchemy技术手册
    Flask与微信小程序登录(后端)
    使用Docker搭建MySQL服务
    开发中常见的正则表达式
    关于CSRF 和 csrftoken
    Flask-migrate基本使用方法
    MySql查询进阶
    常见Http访问错误小结
    git简易操作手册
  • 原文地址:https://www.cnblogs.com/swjian/p/9035875.html
Copyright © 2011-2022 走看看