Andorid学习记录—Async异步操作

当需要单个后台异步处理的时候用AsyncTask比较方便,如果线程任务比较多还是用Handler吧。
时间紧迫,不详细写了,以后再补
实现步骤:
1.自定义一个类继承AsyncTask< Params,Progress,Result >
Params:输入的参数
Progress:更新的进度,一般用来更新UI的进度信息
Result:是执行后的返回结果
2.重写doInBackground()方法。一些需要异步后台操作的方法写在里面
3.重写onPostExecute()方法,当doInBackground()完成后,系统会自动调用此方法,将doInBackground()的返回参数传给此方法。换句话说就是当你的异步操作完成之后就自动调用这个方法,你可以写一些后续操作,这个方法可以改变UI线程,而doInBackground()不可以。
4.在主线程里创建自定义类的对象,调用exetute()方法。
Demo:

public class Async_2 extends Activity implements View.OnClickListener {
    private Button button;
    private EditText editText;
    private TextView textView;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.thread);
        init();
        initlisten();
    }
    private void init(){
        editText=(EditText) findViewById(R.id.e_1);
        button=(Button) findViewById(R.id.b_1);
        textView=(TextView)findViewById(R.id.t_1);
    }
    private void initlisten(){
        button.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        CalTask task=new CalTask();
        task.execute(Integer.parseInt(editText.getText().toString()));//开启异步任务
    }

    /**
     * 自定义异步任务类
     * */
    class CalTask extends AsyncTask<Integer,Integer,ArrayList>{
        //执行异步任务操作的方法
        @Override
        protected ArrayList doInBackground(Integer... params) {
            ArrayList<Integer> list=new ArrayList<Integer>();
            outer:
            for(int i=2;i<=params[0];i++){
                for (int j=2;j<=Math.sqrt(i);j++){
                    if (i!=2&&i%j==0){
                        continue outer;
                    }
                }
                list.add(i);
            }
            return list;
        }
        //任务完成后调用的方法
        @Override
        protected void onPostExecute(ArrayList arrayList) {
            textView.setText(arrayList.toString());
        }
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值