class MyTask extends AsyncTask <Void, Integer, Void>{
/**
运行在后台,相当于是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 <File, Void, String>{
@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
如对本文有疑问, 点击进行留言回复!!
idea 访问html页面端口号显示的是63342而不是8080
网友评论