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
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
JumpServer 安装
安装文档:http://docs.jumpserver.org/zh/docs/step_by_step.html 1、Jumpserver 是一款由Python编写开源的跳板机(堡垒机)系统,实现了跳板机应有的功能。基于ssh协议来管理,客户端无需安装agent。 特点: 完全开源,GPL授权 Python编写,容易再次开发 实现了跳板机基本功能,认证、授权、审计 集成了Ansible,批量命令等 支持WebTerminal Bootstrap编写,界面美观 自动收集硬件信息 录像回放 命令搜索 实时监控 批量上传下载 2、安装: 一步一步安装(CentOS) 环境 系统: CentOS 7 IP: 192.168.244.144 关闭 selinux 和防火墙 # CentOS 7$ setenforce 0 # 可以设置配置文件永久关闭$ systemctl stop iptables.service$ systemctl stop firewalld.service# 修改字符集,否则可能报 input/output error的问题,因为日志里打印了中文$ localedef...
- 下一篇
C#动态系统托盘图标
C#动态系统托盘图标 利用timer组件定时执行变化。 1 using System; 2 using System.Windows.Forms; 3 4 namespace DynamicStockIcon 5 { 6 public partial class DynamicStockIcon : Form 7 { 8 public DynamicStockIcon() 9 { 10 InitializeComponent(); 11 } 12 13 private void DynamicStockIcon_Load(object sender, EventArgs e) 14 { 15 stocktimer.Interval = 400; 16 } 17 18 #region 本程序声明的变量 19 public static bool flag=false ; 20 #endregion 21 22 23 private void flicker_Click(object sender,EventArgs e) 24 { 25 stocktimer.Enabled = true...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8编译安装MySQL8.0.19
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS7,8上快速安装Gitea,搭建Git服务器