一个开发团队de工作组成

来源:互联网 发布:ca沃通根证书 mac 信任 编辑:程序博客网 时间:2024/06/08 12:21

  一个开发团队大致由前端工程师、后端工程师、数据库工程师、项目经理、产品经理等组成。
  Android四大组件分别是Activity(界面视图)、Service(服务)、BroadCast(广播)、ContentProvider(内容提供者),另外提到四大组件就不得不提Intent(意图)。

  四大组件需要在主配置文件中Manifest 定义其命名、包名等,就好比工作人员需要在入职信息表中填写姓名、职位、所属部门等信息一样,方便后续的工作。产品开发过程中,前端工程师、后端工程师、数据库工程师、产品经理是一个项目中的主力工作者,他们之间需协同工作,快速反应,减少阻塞,一旦工作发生阻塞,就会影响整个产品的进度,甚至会使整个产品垮掉。四大组件运行在主线程中,主线程不能做耗时操作,如果主线程操作超过一定时间限制程序会抛出ANR(程序无响应)。

  Activity好比开发团队的前端工程师,专注于产品界面和交互相关代码的实现工作。
  Activity有7个生命周期:
  OnCreate,OnStart,OnReStart,OnResume,OnPause,OnStop,OnDestory。
  A员工每天开始一项工作之前,喜欢先打开浏览器看看有没有什么新鲜事(刷新闻啊),他首先打开浏览器点击新闻准备打开新闻网页(OnCreate);然后浏览器开始加载新闻网页,此时还没有看到网页的内容(OnStart)也不能进行交互,随后网页完全加载完毕,可以点击网页上的按钮浏览其他栏目的内容了(OnResume);此时一个对话框半覆盖在你正在浏览的新闻网页上(OnPause),(在Android中出现这种情况,被覆盖的界面无法获得焦点,也无法交互),原来是警告你该上班了,好吧。于是你关掉了对话框,但是又很快重新被新闻页面吸引了(OnReStart),玩了会后没有什么新鲜新闻了,你开始关闭网页(OnStop),决定不打开网页浏览新闻了(OnDestory),随后你关掉浏览器,终于开始一天的工作了。
  四种启动方式,standard、singleTop、singleInstance、singleTask,四种启动模式。
在浏览新闻的过程中,你发现一个有趣的词,比方说垮掉,你想知道这是什么意思,于是你使用发现使用谷歌搜索发现每点一条搜索结果都只会打开一个的网页(singleTask),使用百度搜索每点一条搜索结果都会打开一个新的网页(standard,系统默认模式。每次启动一个Activity都会重新创建一个新的实例);你想要比较几条搜索结果找到是否有你想要的内容,于是你选择百度浏览器打开了好几个搜索结果页面,你思考了许久发现想要的结果就在现在正在浏览的界面,于是你选择了当前页面,因为这个页面在最上层,此时浏览器不会重新打开这个页面(不会创建一个新的实例,栈顶复用,singleTop),如果你发现你需要的内容在前面的页面而不在当前显示的页面,于是你关掉了最上面的页面,关掉了第N个页面,终于找到了你要找的内容页面,此时找到的这个页面就是当前页面,并处于最上层(singleInstance)。

  Service好比开发团队的后端工程师,负责后台逻辑、服务端相关代码的实现工作。
  从Service的启动方式上,可以将Service分为Started Service(启动式服务)和Bind Service(绑定式服务)。
1),一个项目正在进行的过程中,项目经理指派A做一些后台的协助工作,这个项目的进程跟A本身没有什么关系,项目的工作流程不需要A参与,A按照要求开启这项服务后,需等待项目经理要求停止协助或自行停止才能终止这项服务,这就是启动式服务。(Service通过startService(..)启动Service后,此时Service的生命周期与Client本身的什么周期是没有任何关系的,只有Client调用stopService(..)或Service本身调用stopSelf(..)才能停止此Service。)
2),一个项目正在进行的过程中,项目经理指派A去X项目组工作,A后面的工作跟X项目组进行了绑定,A完成绑定到X项目组的任务以后,需等待项目完结才能停止这项服务工作,这就是绑定式服务。(Bound Service的主要特性在于Service的生命周期是依附于Client的生命周期的,当Client不存在时,Bound Service将执行onDestroy,同时通过Service中的Binder对象可以较为方便进行Client-Service通信。)

  BroadCast好比开发团队的产品经理,产品经理有了产品需求就广播出来,交给其他人员去响应和处理这个广播。
广播的两种类型
1),无序广播:所有跟广播的intent匹配的广播接收者都可以收到该广播,并且是没有先后顺序(同时收到)
2),有序广播:所有跟广播的intent匹配的广播接收者都可以收到该广播,但是会按照广播接收者的优先级来决定接收的先后顺序
  产品经理开发了一系列产品需求每次都会通过广播的方式交给你来实现,现在又有新一个新的需求广播到你这里了,如果新需求没有开发或上线优先级,这是无序广播;如果新需求有开发或上线优先级,这是有序广播。

  ContentProvider开发团队的数据库工程师,为存储和读取数据提供解决方案。
1) ContentProvider为存储和读取数据提供了统一的接口
2)使用ContentProvider,应用程序可以实现数据共享
  数据库工程师建立数据库,为前端、后端开发人员存储和读取数据提供了统一的服务,同时可为其他团队提供数据共享服务。

  Intent 好比项目经理,主要负责跟Activity/Service/BroadCast之间的信息交流,作为信息沟通的桥梁(Android中Intent不作为四大组件中ContentProvider信息沟通的桥梁)。
  Intent又分为显式意图和隐式意图。
1),显式意图好比A开发人员找到项目经理说,我这里有某物(或某事)要转交B去处理,请你帮我找到他并交给他处理吧。这里A明确说了要把东西交给B。
2),隐式意图好比A开发人员找到项目经理说我这里某物(或某事)要转交给别人处理,但是我现在还不知道要交给谁,我只知道这个东西里面装了生鲜,需要进行冷藏处理。这个时候项目经理接收到了生鲜、需要冷藏这个信息,他就会去找与之匹配的能处理这项工作的相关人员B,从而完成这项工作。这里A并没有明确说找到B,项目经理通过过滤(Intentfilter)A的意图——生鲜(Data)、需要冷藏(Action)这些信息,发现在入职人员表(Manifest)中,B人员是这项工作的执行者,从而准确的找到了B,并完成整个工作流程。

阅读全文
0 0
原创粉丝点击