使用AsyncTask 记着一定要关闭

public class ProgressBarAsyncTaskextends AsyncTask {

private TextViewtextView;

private StringvirtualIp;

public ProgressBarAsyncTask(TextView textView,String virtualip) {

super();

this.textView = textView;

this.virtualIp= virtualip;

}

/**

* 这里的Integer参数对应AsyncTask中的第一个参数

* 这里的String返回值对应AsyncTask的第三个参数

* 该方法并不运行在UI线程当中,主要用于异步操作,所有在该方法中不能对UI当中的空间进行设置和修改

* 但是可以调用publishProgress方法触发onProgressUpdate对UI进行操作

*/

    @Override

    protected String doInBackground(Integer... params) {

if (pbat.isCancelled()){

return null;

}else {

sp=mcontext.getSharedPreferences("userConfig",Context.MODE_PRIVATE);

final Stringserverip=sp.getString("serverip","");

final Booleanforward=sp.getBoolean("forward",false);

return String.valueOf(SpiceCommunicator.GetVMNetworkDelay(virtualIp,forward,serverip));

}

}

/**

* 这里的String参数对应AsyncTask中的第三个参数(也就是接收doInBackground的返回值)

* 在doInBackground方法执行结束之后在运行,并且运行在UI线程当中 可以对UI空间进行设置

*/

    @Override

    protected void onPostExecute(String result) {

if (pbat.isCancelled()){

return ;

}else {

Log.e("networkDelay",result+"");

if(result.equals("-1")){

textView.setText("连接桌面超时");

}else {

textView.setText("连接正常,网络延迟" + result+"ms/s");

}

notifyDataSetChanged();

}

}

//该方法运行在UI线程当中,并且运行在UI线程当中 可以对UI空间进行设置

    @Override

    protected void onPreExecute() {

//textView.setText("开始执行异步线程");

    }

/**

* 这里的Intege参数对应AsyncTask中的第二个参数

* 在doInBackground方法当中,,每次调用publishProgress方法都会触发onProgressUpdate执行

* onProgressUpdate是在UI线程中执行,所有可以对UI空间进行操作

*/

    @Override

    protected void onProgressUpdate(Integer... values) {

if (pbat.isCancelled()){

return ;

}

}

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容