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); } }
异步线程中实现Activity之间的跳转
最新推荐文章于 2022-08-23 17:29:32 发布