java多线程execute_多线程(AsyncTask异步任务处理execute()方法)

Handler使用比较复杂

Handler和AsyncTask都是为了不阻塞主线程,且UI的 更新只能在主线程中完成,异步处理是不可避免的

AsyncTask的特点是由系统来创建和删除执行任务的线程,并有效的管理它们

开发者只要创建AsyncTask的子类,实现相应的方法。再创建AsyncTask子类的对象,并执行execute()方法就可以 了

class MyTask extends AsyncTask {

/**

运行在后台,相当于是Thread 中run方法

*运行在子线程中的方法

*/

@Override

protected Void doInBackground (Void. .. params) {

for(int i=0;i<=100;i++) {

publishProgress (i) ;

try {

Thread. sleep (1000) ;

} catch (InterruptedException e) {

e . printstackTrace () ;

}

}

return nu11 ;

}

/**

*进度指示的方法

*运行在主线程中,在这个方法中可以直接更新控件的属性

*/

@Override

protected void onProgressUpdate (Integer... values) {

int num =values [0] ;

tvTest . setText ("num: "+num) ;

super . onProgressUpdate (values) ;

}

/**

*运行在主线程中,当后台运行结束,自动调用的方法

*/

@Override

protected void onPostExecute (Void result) {

Toast . makeText (MainActivity. this, "子线程运行结束",Toast. LENGTH LONG) .show() ;

super . onPostExecute (result) ;

}

执行:

new MyTask() . execute () ;

读取文件示例:

class ReadFileTask extends AsyncTask {

@Override

protected String doInBackground (File. . . params) {

return read (params [0]) ;

}

@Override

protected void onPostExecute (String result) {

etContent. setText (result) ;

super . onPostExecute (result) ;

}

private String read(File file) {

stringBuilder sb=new StringBuilder() ;

BufferedReader bre nul1 ;

try {

br =new BufferedReader (new InputstreamReader (new FileInputstream (file)) )

String line =br . readLine () ;

while (line!=nu1l) {

sb . append (line+"\n") ;

line = br. readLine() ;

}

return sb.toString();

} catch (FileNotFoundException e) {

e.printstackTrace() ;

} catch(IOException e){

e.printstackTrace () ;

}finally{

try {

if (br!=null) {

br.close() ;

} catch (IOException e) {

e. printstackTrace () ;

}

return null;

}

执行:

btnRead . setonClickListener (new View . OnClickListener () {

@Override

public void onClick (View v) {

//执行子线程,完成读取文件工作

File file=new File (Environment. getExternalStorageDirectory() , "test. txt") ;

new ReadFileTask () . execute (file) ;

}

}) ;

本文地址:https://blog.csdn.net/qq_43496675/article/details/107904983

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值