- 1、本文档共83页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
第6章多线程与UI通信
多线程与UI通信当一个Android程序第一次启动的时候,就自动创建了main线程即主线程,又称UI线程。UI线程负责给控件分发事件,处理UI操作,贯穿用户和App交互的整个过程。如果在main线程中运行一个耗时操作,UI就会被锁住,严重影响了用户体验,所以需要把耗时操作移到其它的线程中去执行。Android是单线程模型,不能在非UI线程中处理UI操作。为此Android提供了几种从其他线程访问主线程的方式。
多线程与UI通信6.1进程和线程概述6.2Android线程模型
多线程与UI通信6.1进程和线程概述6.2Android线程模型
Android进程(Process)进程是指一个内存中运行的应用程序,每个进程都占用一块内存空间。一个Android程序第一次启动的时候,系统会启动一个LINUX进程和一个主线程。默认的情况下,该程序的所有组件都将在这个LINUX进程和主线程中运行。在内存资源不足时,Android系统会停止一些进程,释放资源给新进程使用,保证当前进程及时响应用户事件。
Android进程(Process)(1)前台进程ForegroundProcess用户当前正在使用的进程。如活动的Activity,正在运行的服务等。只有当系统内存实在不够运行时,才可能销毁(Kill)前台进程。(2)可见进程VisibleProcess可见进程不包含前台组件,但仍可被用户在屏幕上所见。如弹出一个对话框时,此时Activity的onPause()方法被调用;绑定到可见进程或前台进程的service。
Android进程(Process)(3)服务进程ServiceProcess服务进程是正在运行的,不在上述两种状态的service。如在后台播放音乐或者从网上下载文件。(4)后台进程BackgroundProcess这类进程是对用户不可见的Activity,对用户体验没有直接的影响,可以在前三类进程需要内存的时候被销毁。(5)空进程空进程未运行任何程序组件,仅仅作为缓存使用。
Android进程(Process)一个进程的级别可能会由于其它进程依赖于它而升高。提供服务的进程级别总是高于使用该服务的进程。
Android线程Activity、Service和Broadcast均是一个主线程处理:UI线程。但是在操作一些耗时操作时,比如I/O读写的大文件读写,数据库操作以及网络下载需要很长时间。
Android线程为了不阻塞用户界面,考虑使用Thread线程来解决。J2ME程序的Thread比较简单,直接匿名创建重写run方法,调用start方法执行即可;或者从Runnable接口继承。Android平台UI控件没有设计成为线程安全类型,所以需要引入一些同步的机制来使其刷新。复习一下Java线程的概念
线程Thread现代操作系统是多任务操作系统。多线程是实现多任务的一种方式。进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间。一个运行的exe就是一个进程。?线程是指进程中的一个执行流程,一个进程中可以运行多个线程。线程总是属于某个进程,进程中的多个线程共享进程的内存。?“同时”执行是人的感觉,在线程之间实际上是“分时”轮换执行。?
进程与线程
线程的状态与生命周期线程的生命周期
线程的状态与生命周期1.新建状态(Newborn)2.就绪状态(Runnable)3.运行状态(Running)运行完毕更高优先级线程到来主动睡眠等待资源4.阻塞状态(Blocked)5.消亡状态(Dead)新建就绪运行消亡阻塞
计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。
假定工厂的电力有限,一次只能供给一个车间使用。也就是说,一个车间开工的时候,其他车间都必须停工。背后的含义就是,单个CPU一次只能运行一个任务。
进程就好比工厂的车间,它代表CPU所能处理的单个任务。任一时刻,CPU总是运行一个进程,其他进程处于非运行状态。
一个车间里,可以有很多工人。他们协同完成一个任务。线程就好比车间里的工人。一个进程可以包括多个线程。
车间的空间是工人们共享的,比如许多房间是每个工人都可以进出的。这象征一个进程的内存空间是共享的,每个线程都可以使用这些共享内存。
可是,每间房间的大小不同,有些房间最多只能容纳一个人,比如厕所。里面有人的时候,其他人就不能进去了。这代表一个线程使用某些共享内存时,其他线程必须等它结束,才能使用这一块内存。
一个防止他人进入的简单方法,就是门口加一把锁。先到的人锁上门,后到的人看到上锁,就在
文档评论(0)