Handler 和他的小伙伴们(下)

144
作者 geniusmart
2016.09.18 00:19* 字数 3284

(一)助理

在攻城狮的世界里,阳盛阴衰是普遍现象,这或许是这个行业的工作强度太大所致,作为为数不多的IT从业的女生们,既要有扎实的专业背景,又要负责貌美如花,这足以让我们这些不修边幅的攻城狮们尊重和爱护。

在老张的公司里,每个项目组都配备了一名助理妹纸,很好的做到了阴阳调和,男女搭配干活不累。在日常工作里,助理妹纸们要负责建立起一线攻城狮与领导层之间沟通的桥梁,同时,作为女孩子,爱美是天性,她们淡扫蛾眉,裙角飞扬,一笑百媚,出水芙蓉,是公司一道极其靓丽的风景线。

通过Handler和他的小伙伴们(上)篇中篇的介绍,我们了解到:在老张的公司里,助理有两类,一类是总经理助理(主线程mainLooper),另一类则是团长助理(HanderThread或任何非主线程中的Looper)。作为总经理助理,她的工作能力出类拔萃,是唯一可以与老张直接进行信息对接的角色。意识到这一点之后,很多野心勃勃的团长若有所思。

(二)分歧

在众多的团长中,有一位雷厉风行的管理者,他承担着公司最核心的业务。他十分崇尚敏捷开发,并采用了Scrum框架进行实践,在敏捷开发模式下,他负责的产品快速迭代、试错、接受市场的考验,在老张创业的第二年里立下了不少汗马功劳。由于功绩显赫,且具备顶尖的技术水平和开阔的视野,这让其他项目组倍感压力,这其中也包括他的直接上级——技术总监。

这位能力出众的团长和技术总监向来不和,他们在不少事情上存在分歧。他认为,公司在第一年中开发了基础技术平台,提高了每个项目组的开发效率,虽然已经磨合了一年,但仍存在不少问题,如今参与维护的人员却越来越少,且互相推诿,这种“只管生不管养”的做法对产品本身带来极大的伤害。

当然,技术总监身上的压力巨大,有限的资源和来自市场部的强压,使他必须做出取舍,因此在当前阶段只能牺牲内部基础平台的完善,将资源倾斜于来自市场所需要的产品。两个人各有立场。这一切,老张看在眼里,他的策略是欲擒故纵,即不作为。一个公司里,高层如果一派祥和,死气沉沉,并非是一件好事情,适当的冲突和矛盾,可以刺激高层的进取心,只要大家都是为了产品和市场。

(三)越权

这位雷厉风行的管理者便是 AsyncTask 。与其他团长不一样,他野心勃勃,善弄权术,而且目标性极强,我们暂且称之为A总,由于他与CTO的关系十分微妙,在现有的形势里,他想要达到2个目标:

  1. 绕开技术总监,直接向CEO老张汇报。
  2. 组织自己的领导班子,实施自己的管理手腕。

第一个目标,擅长察言观色的 AsyncTask 团长,很快意识到老张公司里很关键的一个环节——总经理助理,她是CTO和老张之间的桥梁,只要搞定她,所有的工程便可绕开CTO,直接向老张汇报。

第二个目标,所谓三个臭皮匠赛过诸葛亮,AsyncTask 为自己的领导班子定义了三个角色。分别是:

  • 产品策划——FutureTask
  • 产品经理——SerialExecutor
  • 内部政委——InternalHandler

总经理助理知性、干练、处处以大局为重,然而她并不喜欢办公室政治,不喜欢凌驾于制度之上的事情,A总虽然心思缜密,运筹帷幄,然而在与总经理助理这层关系上始终找不到合适的时机实现他的第一个目标。所以,第一个目标暂且搁下,我们先来详细看看A总定义的领导班子。

首先是产品策划(FutureTask),这个角色最重要的职责是定义产品的内容(在doInBackground()中定义),反馈产品的预期成果(postResult()),根据产品前期运营情况来预判是否取消产品方向(cancel()),该角色的工作成果输出形式是策划案子(即 FutureTask对象,其本质是线程接口Runnable)。AsyncTask 之所以钦定了 FutureTask 来充当该角色,首先他是线程,其次作为线程,执行后是有返回值的,并且可以取消任务,这些特质使其在这个角色上大放异彩。


AsyncTask中的FutureTask

在doInBackground中定义线程体

AsyncTask中不靠谱的cancel方法

接下来是产品经理——SerialExecutor。产品经理比策划略大一级,他的职责是审核策划案子,并协调资源实施案子。A总对产品精益求精,他希望有限的资源全部投入到当前的产品中,因此要求团队成员克制欲望,不要轻易的扩张产品线。产品经理很好的贯彻了团长的意图,从名字上看,串行的Executor,对于每个策划案子,产品经理都会协调资源,认认真真执行完后,才会开始下一个案子的执行(SerialExecutor会串行的执行线程,并不会并发)。


SerialExecutor如何将并发变成串行

最后来谈谈内部政委——InternalHandler。通过前两篇文章的介绍,作为政委,通常都会有助理与之配合,在助理的选择上,A总一筹莫展,因为他想搞定的是总经理助理。InternalHandler的工作与助理息息相关,如何通过助理将产品的研发进度和研发成果反馈给CEO老张?此时,问题的关键又来到第一个目标的落实。

职场中总是避免不了人情世故,A总苦思冥想对策,却意外发现总经理助理是他三姑的七大姨的孙女,有了这层关系,所有的问题都迎刃而解,亲情牌加上A总敬业的工作态度,终于打动了总经理助理,她与AsyncTask展开了默契的协作。


政委和总经理助理的协作

A总的专业能力和人际关系能力相得益彰,在打造产品方面也兢兢业业,收获了市场的回报,也获得了老张的赏识。

以技术总监为首的Handler机制,以及以强势团长为首的AsyncTask机制,都能与老张(主线程)很好的协作,虽说一山不容二虎,但有这样的左膀右臂,老张做梦都在偷笑,他要做的便是谨慎维持这样的关系,保证两者都有发挥的空间,维持彼此之间正当的竞争。(AsnycTask 还有很多细节没有讲到,笔者已经在另外一一篇文章中有所介绍,感兴趣的可前往这里

(四)爱情

当然,职场中也并非都是尔虞我诈你死我活,在老张的公司,有这样一个团队,犹如一股清泉,不越权不夺权,专注于技术和产品。与其他团长处心积虑的在老张面前谄媚争宠不一样,这个团队热爱技术,热爱开源,专注于自己的一亩三分地,做好本分的工作,尽可能的不去打扰老张。

首先来看下这个团队的组织结构:


IntentService团队

团长——政委——助理,这个管理模式在上一篇文章里我们再熟悉不过了,不同的是,这个团队里,从上而下,都是年轻的90后,朝气蓬勃,扁平管理,丝毫没有上下级的官僚风气。接下来我们来看下这个团队是如何协作的:


IntentService源码

作为年轻的团队领头人——IntentService,他技术扎实,视野开阔,对技术有所追求的人一般在其他领域也不落下风,他热爱音乐和足球,阳光帅气,举手投足之间都有大将之风。而这个部门的助理,亭亭玉立,活泼可爱,单纯灵动,她的笑容令人如沐春风。两人很快确立了恋爱关系,在工作之余,他们有属于自己独特的交流方式,左眼眨代表0,右眼眨代表1,0101000101,用二进制表达所有的爱意。这是十分难得的美好而单纯的职场爱情,祝愿他们能守候彼此,开花结果。

对于这样的千里马,老张不会错过充当伯乐的机会,他给予这个团队充分的信任和支持。而团队也充分回报了老张的信任,他们在社区中开源的一些技术框架,以及输出的技术博客,都在业内广为流传,为老张的公司带来不少知名度,也间接了吸引了很多技术人才,减少了招聘的成本。

生活也好工作也罢,原本就是如此简单,坚守自己一亩三分地,爱岗敬业,认认真真做好技术和产品,为公司盈利,同时不断打磨完善自己的技能。少些怨天尤人,少些怀才不遇的碎碎念,在互联网时代,是金子终会发光,让技术领域的职场变得更透明简单,事业、利益始终不会亏待这样的你。

(五)Handler和他的小伙伴们

老张的团队核心骨干已经悉数登场,真是八仙过海各显神通,接下来梳理下这些年来老张公司里的英雄榜。

  1. 主线程。这便是公司的创始人老张,也是UI线程,主线程拥有自己的Handler和Looper。

  2. 工作线程。这是工程狮团队们,也就是程序猿,产品汪,设计喵们,他们通过主线程的Handler能与主线程通讯。

  3. HandlerThread。团长们,每个项目组的老大,这条线程拥有自己的Handler和Looper,通过主线程的Handler能与主线程通讯。

  4. Handler。这是技术总监或者政委,在主线程中他便是技术总监,在团长的团队中,则为政委。

  5. Looper。美丽的助理妹纸,在主线程中她是总经理助理,在HandlerThread中,则是团长助理。线程之间能通讯,Handler和Looper功劳最大。

  6. Message和MessageQuene。这是助理的工具箱,收集了来自各个工作线程的消息,存放于消息队列,通过Handler传达给相应的线程进行处理。

  7. AsyncTask。一个兼具实力和野心的管理者,他与主线程的mainLooper密切合作,是主线程Handler的可替代方案之一。

  8. IntentService。这是一个年轻优秀团队的老大,爱情和事业双丰收。他将Service-HandlerThread-Handler-Looper完美结合。

(六)后记

老张的公司仍然在飞速发展,回首这两三年,作为技术出身的老张感慨万千,与代码交流和与人打交道各有乐趣,如今的他既要应付一群手握资源却飞扬跋扈的真小人,也要面对着道貌岸然却贪得无厌的伪君子,同时也有公司中兢兢业业奉献青春的可爱的小伙伴们。老张任重道远,对于他来说,要做的便是严于律己,不忘初心,尊重工程师,对技术敬畏,顺应市场,迎接时代的浪潮。

老张创业的故事仍然在继续。

文艺的安卓君