-
AsyncTask查看全部
-
三个主要的方法查看全部
-
AsyncTask注意事项查看全部
-
AsyncTask查看全部
-
使用AsyncTask的注意事项 ① 必须在UI线程中创建AsyncTask的实例. ② 只能在UI线程中调用AsyncTask的execute方法. ③ AsyncTask被重写的四个方法是系统自动调用的,不应手动调用. ④ 每个AsyncTask只能被执行(execute方法)一次,多次执行将会引发异常. ⑤ AsyncTask的四个方法,只有doInBackground方法是运行在其他线程中,其他三个方法都运行在UI线程中,也就说其他三个方法都可以进行UI的更新操作.查看全部
-
public class ProgressBarTest extends Activity { private ProgressBar pb; private MyAsyncTask mTask; @Override protected void onPause() { super.onPause(); if(mTask!=null&&mTask.getStatus()==AsyncTask.Status.RUNNING){ //cancel方法只是将对应的AsyncTask标记为cancel状态,并不是真正地取消线程的执行。 mTask.cancel(true); } } @Override protected void onCreate(...) { ... mTask=new MyAsyncTask(); mTask.execute(); } class MyAsyncTask extends AsyncTask<Void, Integer, Void>{ @Override protected Void doInBackground(Void... params) { // 模拟进度更新 for (int i = 0; i < 100; i++) { if(mTask.isCancelled()){ break; } publishProgress(i); try { Thread.sleep(300); } catch (InterruptedException e) { ... } } return null; } @Override protected void onProgressUpdate(Integer... values) { super....; if(mTask.isCancelled()){//个人认为可以不用加,根本执行不到 return; } //获取进度更新值 pb.setProgress(values[0]); } } }查看全部
-
模拟进度更新 for(int i=0;i<100;i++){ publishProgress(i); try{ Thread.sleep(300); } catch(InterruptedException e){ e.printStackTrace(); } } onProgressUpdate(Integer...values){ super.onProgressUpdate(values); //获取进度更新值 mProgressBar.setProgress(values[0]); }查看全部
-
@Override protected Bitmap doInBackground(String... params) { // 获取传递进来的参数 String url = params[0]; Bitmap bp = null; URLConnection connection;// 定义网络连接对象 InputStream is;// 用于获取数据的输入流 try { connection = new URL(url).openConnection();// 获取网络连接对象 is = connection.getInputStream();// 获取输入流 BufferedInputStream bis = new BufferedInputStream(is); bp = BitmapFactory.decodeStream(bis);// 将输入流解析成Bitmap is.close(); bis.close(); } catch {... } //将Bitmap作为返回值 return bp; } } }查看全部
-
<uses-permission android:name="android.permission.INTERNET"/> //类 public class ImageTest extends Activity { private ImageView image; private ProgressBar pb; private static String URL = "http://....png"; @Override protected void onCreate(...) { ... setContentView(R.layout.image); image = (ImageView) findViewById(R.id.image); pb = (ProgressBar) findViewById(R.id.progressbar); //设置传递进去的参数 new MyAsyncTask().execute(URL); } class MyAsyncTask extends AsyncTask<String, Void, Bitmap> { @Override protected void onPreExecute() { super.onPreExecute(); pb.setVisibility(View.VISIBLE); } @Override protected void onPostExecute(Bitmap bitmap) { super.onPostExecute(bitmap); pb.setVisibility(View.GONE); image.setImageBitmap(bitmap); }查看全部
-
构建AsyncTask子类的参数 AsyncTask<Params,Progress,Result>是一个抽象类,通常用于被继承,继承需要指定如下三个泛型参数: 1、Params:启动任务时输入参数的类型; 2、Progress:后台任务执行中返回进度的类型; 3、Result:后台执行任务完成后返回结果的类型。查看全部
-
异步任务 AsyncTask: 1.为什么要使用异步任务? Android单线程模型,耗时操作放在非主线程中执行 2.AsyncTask为何而生: 可以在子线程中更新ui,封装简化异步操作查看全部
-
asynctask查看全部
-
asynctask查看全部
-
会调方法查看全部
-
异步任务注意事项: 还需知道AsyncTask类之所以可以执行异步处理,是因为其类中的四个抽象方法只有Doinbreakground方法是在其他线程中执行,而其他三个方法是运行在UI线程中的,所以其可以执行异步任务。查看全部
举报
0/150
提交
取消