异步线程中实现Activity之间的跳转

package com.example.administrator.myapplication.test;

import android.content.Context;
import android.content.Intent;
import android.os.AsyncTask;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;

import com.example.administrator.myapplication.Activity1;

//生成该类的对象,并调用其execute方法之后
//首先执行的是onPreExecute方法
//其次是执行doInBackground方法
public class AsyncTaskTest extends AsyncTask<Integer, Integer, String>{

    private ProgressBar pb;
    private Button btn;
    private Context context ;
    private String username;

    public AsyncTaskTest(Button btn, ProgressBar pb,Context context,String username ){
        this.btn=btn;
        this.pb=pb;
        this.context = context;
        this.username = username;
    }

    //该方法并不运行在UI线程内,所以在方法内不能对UI当中的控件进行设置和修改
    //主要用于进行异步操作
    //作用:实现异步登录
    @Override
    protected String doInBackground(Integer... params) {
        for(int i=params[0];i>0;i--){
            publishProgress(i);
            try{
                System.out.println(i);
                Thread.sleep(1000);
            }catch (Exception e) {
                e.printStackTrace();
            }
        }
        return "success";
    }

    //该方法运行在Ui线程内,可以对UI线程内的控件设置和修改其属性
    @Override
    protected void onPreExecute() {
        System.out.println("开始执行异步操作!");
        pb.setVisibility(View.VISIBLE);//进度条可见
        btn.setEnabled(false);//btn不可用
    }

    //在doInBackground方法当中,每次调用publishProgrogress()方法之后,都会触发该方法
    @Override
    protected void onProgressUpdate(Integer... values) {
        pb.setProgress((-values[0] + 4) * (100/3));
        btn.setText("正在登录中 "+values[0]+"...");
    }

    //在doInBackground方法执行结束后再运行,并且运行在UI线程当中
    //主要用于将异步操作任务执行的结果展示给用户
    @Override
    protected void onPostExecute(String result) {
        System.out.println("异步操作执行结束 "+result);
        pb.setVisibility(View.INVISIBLE);
        btn.setText("登录成功");
        Intent intent = new Intent(context,Activity1.class);
        intent.putExtra("username",username);
        context.startActivity(intent);
        btn.setEnabled(true);
    }

}

猜你喜欢

转载自blog.csdn.net/cinderella___/article/details/80039851