android异步处理AsyncTask

相信不少攻城狮觉得另开一个类写线程肯定觉得特别麻烦 代码也繁琐 毕竟不能写在主线程中 主线程只用来刷新一些ui页面 但AsyncTask就不同了 可以写在主线程中 不会造成程序崩溃 是谷歌为了解决Thread复杂麻烦出了一个解决方案  这里我就简单讲两个例子


主要是理解才可以灵活应用 我这里先讲一个数字增长从0到100使用到AsyncTask线程后台运行 为了显示出效果使用到线程休眠 这里先部署一下包的布局和xml 文件

第一个为功能清单 一些权限sdk等在这里设置

MainActivity是我第一个讲的内容ReadText 读取设备存储的一个txt文件 ReadInt 是读取网路数据的一个java

图片发自简书App
图片发自简书App

然后看一下我的xml 代码 我这里选的线性布局 你可以根据爱好和每个布局的特色来设计布局 这里我就写了两个控件 TextView和Button 我为了方便没把文字写到数组中 根据需要自己去添加

图片发自简书App

然后来看我的java文件 先照顾一下一些小白吧 第一行为你的包名

import 是调用api文件 以第一个为例 调用 安卓包下的APP的activity

然后公开的class 继承于Activity

简单的声明控件 格式为private 控件总称 你想定义的名字

这里是activity的生命周期onCreate返回一个保存过的缓存数据 具体生命周期建议去谷歌官网查看

设置上下文示图 res下的布局的布局id

绑定控件id 和按钮设置监听 按钮设置点击监听建议使用这个 不建议使用xml中指明点击监听 在一些手机可能会出问题

在这里我设置了按钮点击后就不可以再点击了 设置Enabled 为假

调用我的MyTask方法 下面会写出来具体的实现

图片发自简书App

这里具体写了一个MyTask 继承于AsyncTask 如果你要设置其他的类可以访问可以添加public公开private自身包访问 protected只有这个方法才可以访问

首先写出来这个方法 必须生成一个方法 叫doInBackground后台运行的方法 你可以右击生成方法 或者点红色感叹号自动补全代码实现方法

onPreExecute准备工作做的事情 我加了一个设置文本用来提示用户正在加载

然后后台运行的工作是数字自增加 注意 一定不要把ui刷新写在这里 否则会崩溃

图片发自简书App

加入一个线程 防止自增长过快 看不出来效果

用try 方法包围

最后无法实行的结果 返回一个空值

进展更新调用的方法 定义int类型的值 文本设置得到的数字

图片发自简书App

最后进程结束的工作 进程完成自动调用这个方法 我写了两个提示 一个Toast一个文本改成执行完毕

图片发自简书App

效果图就不示范了 本人确保代码可以正确运行 有不懂的可以来问我

下面开始讲第二个示例 来获取手机存储设备的一个txt文件 建议自己写一个文件来实践 直接放到手机存储中即可 你也可以使用完毕删除他 我的文件名叫做testText.txt

1同样先来示例我的布局截图自己xml代码

图片发自简书App

这里加了一个按钮用来读取文件 然后还有一个ProgressBar用来显示进度 EditText用来显示获取的文件


图片发自简书App

前面已经讲过这个了 这里就不多讲了

图片发自简书App

按钮点击监听实现指明路径 开启一个新的AsyncTask 注意括号里的代码 路径 整数 string数组

注意需要指明路径的正确位置 环境 得到存储设备 文件名

下面调用的方法也已经讲过 有不明白的去上面看一下

图片发自简书App

主要是在自己写这个读的方法 得到数组 初始化 为了提示用户得到数据写了两个长度来给进度条显示进程

缓冲读取器的初始化

下面尝试读取文件 初始化缓冲读取器 输出流读取 路径输出读取 路径名字file 前面已经定义过路径的地址 编码格式为GBK 可以根据自己情况而定 得到缓冲读取器中的读取行

图片发自简书App

需要判断文件中是否有行内容 当不为空执行查询 stringBuilder动态数组添加获取到的内容加换行符号 读取长度叠加等于文件得到字节的长度 定义一个int值用来公布汇报进程 同样休眠0.1秒 行等于缓冲读取器的读取行 返回数组 下面是防止找不到文件 或已经读取完毕等意外情况的优化 自动生成代码


图片发自简书App

最后 尝试如果缓冲读取器不为空值 需要关闭缓冲读取器 否则内存泄露 会影响用户体验的性能 否则出问题返回空值 思路要严谨

线程更新的时候将得到的长度解析设置到进度条上显示

最容易忽略的一步 在功能清单上注册读取内存卡的权限

图片发自简书App

到这里我们的优化讲解就已经讲完了 我把所有用到的数据都公布在这里了 如果还有不懂的 点个小心心送给小编 不给我也可以讲述 不给就是小编讲的不够完美嘛

这么晚了 我也要洗洗睡了

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,639评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,093评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,079评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,329评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,343评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,047评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,645评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,565评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,095评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,201评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,338评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,014评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,701评论 3 332
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,194评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,320评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,685评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,345评论 2 358

推荐阅读更多精彩内容