Android学习---使用异步内部类实现进度条加载效果
2017-05-22 10:30
543 查看
Android学习—使用异步内部类
为什么要用AsyncTask?
答:我们可以用上述两种方法来完成我们的异步操作,加入要我们写的异步操作比较多,或者较为繁琐,难道我们new Thread()然后用上述方法通知UI更新么?程序员都是比较喜欢偷懒的,既然官方给我
们提供了AsyncTask这个封装好的轻量级异步类,为什么不用呢?我们通过几十行的代码就可以完成
我们的异步操作,而且进度可控;相比起Handler,AsyncTask显得更加简单,快捷~当然,这只适合
简单的异步操作,另外,实际异步用的最多的地方就是网络操作,图片加载,数据传输等,AsyncTask
暂时可以满足初学者的需求,谢谢小应用,但是到了公司真正做项目以后,我们更多的使用第三发的
框架,比如Volley,OkHttp,android-async-http,XUtils等很多,后面进阶教程我们会选1-2个框架进行
学习,当然你可以自己找资料学习学习,但是掌握AsyncTask还是很有必要的!
2)AsyncTask的基本结构:
AsyncTask是一个抽象类,一般我们都会定义一个类继承AsyncTask然后重写相关方法~
官方API:AsyncTask
• 构建AsyncTask子类的参数:
• 相关方法与执行流程:
• 注意事项:
`
后台代码
package com.example.administrator.myapplication; import android.os.AsyncTask; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.ProgressBar; import android.widget.TextView; public class MainActivity extends AppCompatActivity { TextView tv; Button btn; ProgressBar pg; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); pg = (ProgressBar) findViewById(R.id.progressBar); btn=(Button)findViewById(R.id.btn); tv=(TextView)findViewById(R.id.tv); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { MyTask mt=new MyTask(); mt.execute(1000); } }); } //onPreExecute()-> doInBackground -> class MyTask extends AsyncTask<Integer,Integer,String>{ int i; @Override protected void onPreExecute() { super.onPreExecute(); tv.setText("start"); } @Override protected void onPostExecute(String s) { super.onPostExecute(s); tv.setText("finsh"); } @Override protected String doInBackground(Integer... integers) { try { for (i= 0; i<=100; i++){ Thread.sleep(integers[0]); publishProgress(i); } } catch (InterruptedException e) { e.printStackTrace(); } return null; } @Override protected void onProgressUpdate(Integer... values) { super.onProgressUpdate(values); pg.setProgress(values[0]); } } }
效果图
相关文章推荐
- Android_Loader_使用LoaderManager管理Loader实现异步动态加载数据
- Android 异步加载图片,使用LruCache和SD卡或手机缓存,效果非常的流畅
- Android 异步加载图片,使用LruCache和SD卡或手机缓存,效果非常的流畅
- Android 异步加载图片,使用LruCache和SD卡或手机缓存,效果非常的流畅
- 【Android】使用LoaderManager管理Loader实现异步动态加载数据
- 使用架包实现android异步加载图片
- Android_Loader_使用LoaderManager管理Loader实现异步动态加载数据
- 使用js的定时器setTimeout()实现加载进度条效果
- Android 异步加载图片,使用LruCache和SD卡或手机缓存,效果非常的流畅
- Android 异步加载图片,使用LruCache和SD卡或手机缓存,效果非常的流畅
- Android中实现图片的异步加载学习笔记
- Android中实现图片的异步加载学习笔记
- TexturePacker打包图片并使用addImageAsync实现longding界面异步加载图片纹理---cocos2d-x学习之路[3]
- Android 异步加载图片,使用LruCache和SD卡或手机缓存,效果非常的流畅
- Android 异步加载图片,使用LruCache和SD卡或手机缓存,效果非常的流畅
- Android 异步加载图片,使用LruCache和SD卡或手机缓存,效果非常的流畅
- Android 异步加载图片,使用LruCache和SD卡或手机缓存,效果非常的流畅
- Android 异步加载图片,使用LruCache和SD卡或手机缓存,效果非常的流畅
- Android 异步加载图片,使用LruCache和SD卡或手机缓存,效果非常的流畅
- Android 异步加载图片,使用LruCache和SD卡或手机缓存,效果非常的流畅