android异步任务
16lz
2021-12-04
Android默认UI线程阻塞超过20s,就会引发ANR异常。
AsyncTask
分别用于
启动任务,输入的参数
进度值的展示
结果的返回
重写相应方法
package down;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.MalformedURLException;import java.net.URL;import java.net.URLConnection;import com.example.asynctask.R;import android.app.Activity;import android.app.ProgressDialog;import android.content.Context;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.TextView;public class Main extends Activity{private TextView tx;@Overrideprotected void onCreate(Bundle savedInstanceState){// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.main);tx = (TextView) findViewById(R.id.textview);}public void download(View v){try{//启动任务URL url = new URL("http://www.w3school.com.cn/");AsyncTaskTest ans = new AsyncTaskTest(this);ans.execute(url);} catch (MalformedURLException e){// TODO Auto-generated catch blocke.printStackTrace();}}class AsyncTaskTest extends android.os.AsyncTask{private ProgressDialog pDialog;private Context mContext;private int hasRead = 0;public AsyncTaskTest(Context mContext){// TODO Auto-generated constructor stubthis.mContext = mContext;}//任务@Overrideprotected String doInBackground(URL... params){// TODO Auto-generated method stubtry{StringBuilder sb = new StringBuilder();URLConnection conn = params[0].openConnection();BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));String line = null;while ((line = br.readLine()) != null){hasRead++;sb.append(line + "\n");onProgressUpdate(hasRead);}return sb.toString();} catch (IOException e){// TODO Auto-generated catch blocke.printStackTrace();}return null;}//执行任务后@Overrideprotected void onPostExecute(String result){// TODO Auto-generated method stubsuper.onPostExecute(result);tx.setText(result);pDialog.dismiss();}//执行任务前@Overrideprotected void onPreExecute(){// TODO Auto-generated method stubsuper.onPreExecute();pDialog = new ProgressDialog(mContext);pDialog.setTitle("任务下载中");pDialog.setMessage("任务正在下载中---");pDialog.setCancelable(false);pDialog.setMax(202);pDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);pDialog.setIndeterminate(false);pDialog.show();}@Overrideprotected void onProgressUpdate(Integer... values){// TODO Auto-generated method stubsuper.onProgressUpdate(values);pDialog.setProgress(values[0]);}}}
更多相关文章
- Android中Dex分包实践
- Android(安卓)HttpClient post MultipartEntity - Android(安卓)
- 2010.11.16———android Camera 拍照的两个问题
- 编译 Android版本的Openal方式
- Android下载网络图片到本地
- Android实现点击两次返回键退出
- Android(安卓)SDK下载和更新失败的解决方法
- Android中有关Handler的使用(二)
- gradle-xxx.jar下载地址和gradle-xxx.zip下载地址