您的位置:首页 > 移动开发 > Android开发

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]);

}

}
}


效果图

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐