剖析Android多线程.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
剖析Android多线程

Java- Android 多线程 一.Java Thread 小结: 1. 我们要实现多线程, 必须编写一个继承了Thread 类的子类,子类要覆盖 Thread 类中的 run 函数,在子类的 run 函数中调用想在新线程上运行的程序代码 。 2. 启动一个新的线程,我们不是直接调用 Thread 的子类对象的 run 方法,而是调 用Thread 子类对象的 start (从 Thread 类中继承的)方法 , Thread 类对象的 start 方法将产生一个新的线程(注意:对于同一个Thread对象,多次使用start方法,并不会创建多个线程!),并在该线程上运行该 Thread 类对象中的 run 方法,根据面向对象的多态性,在该线程上实际运行的是 Thread 子类(也就是我们编写的那个类)对象中的 run 方法 。 3. 由于线程的代码段在 run 方法中,那么该方法执行完成以后线程也就相应的结束了 ,因而我们可以通过控制 run 方法中的循环条件来控制线程的终止。 二.用 Runnable 接口创建多线程 在 JDK 文档中,我们还看到了一个 Thread(Runnable target) 构造方法。Runnable是一个接口,不是一个线程,一般线程会实现Runnable。 从 JDK 文档中查看 Runnable 接口类的帮助,该接口中只有一个 run() 方法,当我们使用 Thread(Runnable target) 方法创建线程对象时,需为该方法传递一个实现了 Runnable 接口的类对象。 这样创建的线程将调用那个实现了 Runnable 接口的类对象中的 run() 方法作为其运行代码(所以我们自己要实现Runnable的Run方法),而不再调用 Thread 类中的 run 方法了。当然,还是要对Thread对象调用start方法的。 三.实现 Runnable 接口相对于继承 Thread 类来说,有如下显著的好处: 1 、适合多个相同程序代码的线程去处理同一资源的情况,2 、 可以避免由于 Java 的单继承特性带来的局限 。 3 、有利于程序的健壮性, 代码能够被多个线程共享,代码与数据是独立的。 事实上,几乎所有多线程应用都可用第二种方式,即实现 Runnable 接口。 四.Android 中的多线程 在Android中,Thread类通常和Android的Handler类共同使用,用来更新UI界面。当然,你也可以单独使用Thread类来实现一些耗时的操作,比如:下载文件。 在《解密Google Android》一书中,发现了这样一个启动线程的模型。利用该模型,我们可以把一些耗时的操作放到doStuff方法中去执行,同时在updateUIHere方法中进行更新UI界面的操作,就可以完成一个线程所需要的功能。其他的说明写在注释部分了。 Handler myHandler = new Handler() { public void handleMessage(Message msg) { updateUIHere(); } } new Thread() { public void run() { doStuff(); // 执行耗时操作 Message msg = myHandler.obtainMessage(); Bundle b = new Bundle(); b.putString(key, value); m.setData(b); // 向消息中添加数据 myHandler.sendMessage(m); // 向Handler发送消息,更新UI } }.start(); 1.Handler 对于线程的控制,我们将介绍一个Handler类,使用该类可以对运行在不同线程中的多个任务进行排队,并使用Message和Runnable对象安排这些任务。 Handler对象的四个构造方法: Handler() Handler(Looper looper) Handler(Handler.Callback callback) Handler(Looper looper, Handler.Callback callback) 第一个和第二个比较常用。下面就是常见的用法和解释: 如果new一个无参构造函数的Handler对象,那么这个Handler将自动与当前运行线程相关联,也就是说这个Handler将与当前运行的线程使用同一个消息队列,并且可以处理该队列中的消息。直接利用无参Handler对象post了一个runnable对象,相当于直接调用了Runnable对象的run函数,也就说没有经过start函数调用run(),那么就不会创建一个新线程

文档评论(0)

qwd513620855 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档