为了账号安全,请及时绑定邮箱和手机立即绑定

Android必学-AsyncTask基础

难度中级
时长49分
学习人数
综合评分9.77
206人评价 查看评价
9.8 内容实用
9.9 简洁易懂
9.6 逻辑清晰
  • AsyncTask<String,Void,Bitmap>三个参数分别为:url类型,进度值类型,返回值类型。 这里的例子暂时不设置进度值,url设置为String类型,又因为我们加载的是一张Bitmap,所以返回的参数类型设置为 Bitmap。 1. doInBackground(String...params)传进来的是一个可变长数组,也就是说,我们可以传进不止一个参数(通过execute()传进来),这些参数依次存在于这个数组中。现在只有一个参数,所以只要写个params[0]取出对应的URL即可。 2. 定义一个Bitmap,也就是我们所要获取的Bitmap。 3. 定义一个访问网络的URLconnection,也就是一个网络连接对象connection。 4. 定义一个InputStream,用于获取数据的输入流。 5. 初始化connection:connection = new URL(url).openConnection();这里需要自行导入jar包:import java.net.URL; 另外需要try-catch包围。 6. 获取输入流:is = connection.getInputStream(); 7. 对输入流进行包装:BufferedInputStream bis = new BufferedInputStream(is); 8. 通过decodeStream()将输入流解析成 Bitmap:bitmap = BitmapFactory.decodeStream(bis); 9. 关闭输入流、返回 bitmap。
    查看全部
    0 采集 收起 来源:创建AsyncTask类

    2018-03-22

  • 网络操作作为不稳定的废时操作,从android 4.0开始就被严禁放入主线程中 通常采用在异步线程处理下载图像 在UI线程设置图像 ProgressBar XML属性 visibility="gone"可设置为默认状态下为隐藏 VISIBLE:设置控件可见 INVISIBLE:设置控件不可见 GONE:设置控件隐藏 而INVISIBLE和GONE的主要区别是:当控件visibility属性为INVISIBLE时,界面保留了view控件所占有的空间;而控件属性为GONE时,界面则不保留view控件所占有的空间。
    查看全部
    0 采集 收起 来源:AsyncTask创建UI

    2018-03-22

  • 构建AsyncTack子类的参数 AsyncTask<Params,Progress,Result>是一个抽象类,通常用于被继承,继承AsyncTask需要指定如下三个泛型参数: params:启动任务时输入参数的类型。 progress:后台任务执行中,返回进度值的类型。 Result:后台执行任务完成后,返回结果的类型。 ------------------------ 如何构建AsyncTask子类的回调方法? 一个完整的AsyncTask通常需要指定如下几个方法: 1. doInBackground:这是AsyncTask子类所必须要重写的方法,异步执行后台线程将要完成的任务。我们所有的耗时操作都将在这个方法中进行操作。 2. onPreExecute:执行后台耗时操作之前被调用,通常是用户完成一些初始化操作。 3. onPostExecute:当doInBackground()完成后,系统会自动调用此方法,并将doInBackground()返回的值传给该方法,也就是展示处理完成的结果。 4. onProgressUpdate:在doInBackground()方法中调用publishProgrsss()更新任务的执行进度后,就会触发该方法(必须先调用publishProgrsss()),就可以知道当前耗时操作的完成进度。 ---------------------------------- 额外补充: 1. 注意这里的例子继承的是 AsyncTask<Void,Void,Void>,需要带上三个泛型,定义Void泛型要注意V是大写。。。 2. 执行顺序:onPreExecute() --> doInBackground() --> onProgressUpdate() --> onPostExecute()。
    查看全部
  • 为什么需要使用异步任务? 我们知道,Android中只有UI线程,也就是主线程才能进行对UI的更新操作,而其他线程是不能直接操作UI的.这样的好处是保证了UI的稳定性和准确性,避免多个线程同时对UI进行操作而造成UI的混乱.但Android是一个多线程的操作系统,我们总不能把所有的任务都放在主线程中进行实现,比如网络操作,文件读取等耗时操作,如果全部放到主线程去执行,就可能会造成后面任务的阻塞.Android会去检测这种阻塞,当阻塞时间太长的时候,就会抛出Application Not Responsed(ANR)错误.所以我们需要将这些耗时操作放在非主线程中去执行.这样既避免了Android的单线程模型,又避免了ANR. .AsyncTask为何而生? 提到异步任务,我们能想到用线程,线程池去实现.确实,Android给我们提供了主线程与其他线程通讯的机制.但同时,Android也给我们提供了一个封装好的组件--AsyncTask.利用AsyncTask,我们可以很方便的实现异步任务处理.AsyncTask可以在子线程中更新UI,也封装简化了异步操作.使用线程,线程池处理异步任务涉及到了线程的同步,管理等问题.而且当线程结束的时候还需要使用Handler去通知主线程来更新UI.而AsyncTask封装了这一切,使得我们可以很方便的在子线程中更新UI.
    查看全部
    1 采集 收起 来源:AsyncTask概述

    2017-05-24

  • AsyncTask默认情况下会等待前一个线程执行完毕后再执行下一个线程,要取消该机制,可以让AsyncTask和Activity的生命周期保持一致
    查看全部
  • doInbg
    查看全部
    0 采集 收起 来源:创建AsyncTask类

    2017-04-30

  • AsyncTask<Params,Progress,Result>是一个抽象类,通常用于被继承,继承AsyncTask需要指定如下三个泛型参数: params:启动任务时输入参数的类型。 progress:后台任务执行中,返回进度值的类型。 Result:后台执行任务完成后,返回结果的类型。
    查看全部
  • 使用AsynTask 方法的调用顺序 1 耗时任务开始前的初始化 2 耗时任务异步处理 3 更新进度条,需要在doInBackground中调用publishProgress(); 4 返回处理后的结果
    查看全部
  • AsyncTask注意事项
    查看全部
    0 采集 收起 来源:总结

    2017-04-15

  • if(isCanceled()) break;
    查看全部
  • 主线程暂停时AsyncTask也应该停止
    查看全部
  • 构建AsyncTask子类的回调方法
    查看全部
  • 构建AsyncTask子类的参数
    查看全部
  • 异步任务所需要实现的方法
    查看全部
  • AsyncTask<Params,Progress,Result> Params:启动任务时输入参数的类型。 Progress:后台任务执行中返回进度值的类型。 Result:后台执行任务完成后返回结果的类型。
    查看全部

举报

0/150
提交
取消
课程须知
本课程是Android初级课程 1、掌握基本的Android应用程序开发方法 2、掌握AsyncTask中个方法中参数的意义 3、掌握AsyncTask中4个常用的方法
老师告诉你能学到什么?
1、了解Android的单线程模型 2、 AsyncTask的基本构成 3、 AsyncTask的回调方法 4、 AsyncTask实例

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!