Android-AsyncTask初体验
来源:互联网 发布:苹果手机mac地址修改 编辑:程序博客网 时间:2024/06/09 14:57
AsyncTask学习记录
AsyncTask介绍
- 异步任务
- 为了解决不能在主线程做耗时操作,不能在子线程更新UI
- 是android提供的轻量级的异步类,简单,快捷
具体详细代码如下(布局过于简单这就不给出了)
public class MyAsyncTaskText extends Activity{ private TextView startText, progerssText, endText; private Button startBtn; private MyAsync myAsync; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); startText = (TextView) findViewById(R.id.text1); progerssText = (TextView) findViewById(R.id.text2); endText = (TextView) findViewById(R.id.text3); startBtn = (Button) findViewById(R.id.button1); myAsync = new MyAsync(); startBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //执行异步AsyncTask,并传入可变参数,它的doInBackground方法能收到 myAsync.execute("a","b"); } }); } /** * 使用步骤 * 1、写一个类继承自AsyncTask * 有三个范型 * 1、请求参数的类型 * 2、进度的类型 * 3、返回结果的类型 */ class MyAsync extends AsyncTask<String, Integer, String> { /** * 相当于子线程的操作 * 参数:String... 这叫可变参数(可以传0~n) 相当于一个数组 * 在调用异步任务的时候传递过来的 * 返回值 会将返回的结果返回到onPostExecute的方法中 * 必须重写 */ @Override protected String doInBackground(String... params) { //用来处理字符串变化 StringBuilder builder = new StringBuilder(Arrays.toString(params)); int i = 0; while(builder.length() < 30) { //每隔0.2秒添加一个字符,并更新进程 builder.append(i++); //更新进程,此时会自动调用onProgressUpdate方法 publishProgress(i); try { Thread.sleep(200); } catch (InterruptedException e) { e.printStackTrace(); } } return builder.toString(); } //这下面的三个方法都能更新UI //当异步任务开始执行的时候调用 @Override protected void onPreExecute() { super.onPreExecute(); startText.setText("开始执行异步操作"); } /** * 必须调用publishProgress(values)方法才能调用到onProgressUpdate方法 * 当进度更新的时候调用 */ @Override protected void onProgressUpdate(Integer... values) { super.onProgressUpdate(values); progerssText.setText("当前进度 :" + values[0]); } /** * 这里的String参数对应AsyncTask中的第三个参数(也就是接收doInBackground的返回值) * 在doInBackground方法执行结束之后在运行,并且运行在UI线程当中 可以对UI空间进行设置 */ @Override protected void onPostExecute(String result) { super.onPostExecute(result); endText.setText("异步操作执行结束\n result=" + result); } }}
最终效果如下
我的感受
- 现在我感觉这东西真是太好用了,只需覆写几个方法,就可以对线程当前状态进行观察,而且在onPreExecute、onProgressUpdate、onPostExecute中还能对UI控件进行操作
- 这东西用来做进度条是再好不过的了
- 结构很明了
想说的话
- 博客坚持写,不管怎样,今后学习了新的东西就在这里记录一下,以便今后回顾,也希望小小笔记能帮助你们
- 若内容有什么地方不对、不清楚,望吐槽,希望大家能一起快乐学习和成长
- 来一句:有时候我们的想法会被否决,即便后来发现我们是对的,也不可存在怨恨情绪,或者说类似于“我老早就说过会这样,还不信”的话。不要让团队之间由此产生间隙,不要因为这点小事耿耿于怀、常常抱怨。
0 0
- Android-AsyncTask初体验
- Android开发学习之路--异步消息Handler,Message,Looper和AsyncTask之初体验
- Android开发学习之路--异步消息Handler,Message,Looper和AsyncTask之初体验
- Android asyncTask
- Android AsyncTask
- Android AsyncTask
- Android AsyncTask
- Android AsyncTask
- Android AsyncTask
- Android asyncTask .
- Android AsyncTask
- Android AsyncTask
- Android AsyncTask
- Android AsyncTask
- Android AsyncTask
- Android AsyncTask
- Android AsyncTask !!!!
- Android AsyncTask
- 中国小企业的信息化的伪命题
- 算法 -- 数字三角形之动态规划
- Windows下安装并设置Redis
- UVA 11992 Fast Matrix Operations 线段树
- 声卡id
- Android-AsyncTask初体验
- Android DiskLruCache完全解析,硬盘缓存的最佳方案
- find命令的exec参数使用---Linux学习笔记
- 【内容转载】iOS开发----Xcode7升级之后插件无法使用与不小心点击Skipbundle的解决办法
- mysql 脚本暂存
- linux kernel source code阅读记录(一)LDS文件详解
- acm2015北京区域赛游记
- 从github上下载项目到eclipse中
- Kiwi,BDD行为测试框架--iOS攻城狮进阶必备技能