罗朝辉(飘飘白云)

关注嵌入式操作系统,移动平台,图形开发。-->加微博 ^_^

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  85 随笔 :: 0 文章 :: 169 评论 :: 0 Trackbacks

07 2014 档案

     摘要: 在本系列文章的第一篇《Android多线程分析之一:使用Thread异步下载图像》中,曾演示了如何使用 Thread 来完成异步任务。Android 为了简化在 UI 线程中完成异步任务(毕竟 UI 线程是 app 最重要的线程),实现了一个名为 AysncTask 的模板类。使用 AysncTask 能够在异步任务进行的同时,将任务进度状态反馈给 UI 线程(如让 UI 线程更新进度条)。正是由于它与 UI 线程紧密相关,使用的时候要就有一些限制,AysncTask 必须在 UI 线程中创建,并在 UI 线程中启动(通过调用其 execute() 方法);此外,AysncTask 设计的目的是用于一些耗时较短的任务,如果是耗时较长的任务不推荐使用 AysncTask。

可以用简化记忆 “三参数,四步骤” 来学习 AysncTask。 即带有三个模板参数 ,四个处理步骤:onPreExecute,doInBackground,onProgressUpdate,onPostExecute。  阅读全文
posted @ 2014-07-19 14:45 罗朝辉 阅读(1757) | 评论 (1)  编辑

     摘要: 在前面两篇文章《Android多线程分析之二:Thread的实现》,《Android多线程分析之三:Handler,Looper的实现》中分别介绍了 Thread 的创建,运行,销毁的过程以及 Thread与 Handler,Looper 之间的关联:Thread 在其 run() 方法中创建和运行消息处理循环 Looper,而 Looper::loop() 方法不断地从 MessageQueue 中获取消息,并由 Handler 分发处理该消息。接下来就来介绍 MessageQueue 的运作机制,MessageQueue。  阅读全文
posted @ 2014-07-14 17:15 罗朝辉 阅读(1940) | 评论 (0)  编辑

     摘要: 在前文《Android多线程分析之二:Thread的实现》中已经详细分析了Android Thread 是如何创建,运行以及销毁的,其重点是对相应 native 方法进行分析,今天我将聚焦于 Android Framework 层多线程相关的类:Handler, Looper, MessageQueue, Message 以及它们与Thread 之间的关系。可以用一个不太妥当的比喻来形容它们之间的关联:如果把 Thread 比作生产车间,那么 Looper 就是放在这车间里的生产线,这条生产线源源不断地从 MessageQueue 中获取材料 Messsage,并分发处理 Message (由于Message 通常是完备的,所以 Looper 大多数情况下只是调度让 Message 的 Handler 去处理 Message)。正是因为消息需要在 Looper 中处理,而 Looper 又需运行在 Thread 中,所以不能随随便便在非 UI 线程中进行 UI 操作。 UI 操作通常会通过投递消息来实现,只有往正确的 Looper 投递消息才能得到处理,对于 UI 来说,这个 Loop  阅读全文
posted @ 2014-07-12 11:00 罗朝辉 阅读(2923) | 评论 (0)  编辑

     摘要: 在前文《Android多线程分析之一:使用Thread异步下载图像》中演示了如何使用 Thread 处理异步事务。示例中这个 Java Thread 类都是位于 Framework 层的类,它自身是通过 JNI 转调 dalvik 里面的 Thread 相关方法实现的。因此要分析 Androd 中的线程,就需要分析这两层中的与线程相关的代码,这就是本文要探讨的主题。本文将把 Framework 层中的 Java Thread 称为 Android 线程/Thread,而把 dalvik 中的 Thread 成为 dalvik 线程/Thread。   阅读全文
posted @ 2014-07-11 10:29 罗朝辉 阅读(6469) | 评论 (1)  编辑

     摘要: 前不久我发了一篇《八一八招聘的那些事儿》讲了我自己作为求职者对招聘的一些看法。那个时候我还在求职,对求职的结果还是挺满意的,五家公司面试,放弃了其中三家的offer(包括盛大云计算,东航信息部以及一小美资公司),拒了一家的二面(因为我已经做好决定了),最后选择了以前工作过的老东家-上海科泰。虽然科泰给的 offer 待遇不是所有 offer 中最高的,但我还是选择回归,主要是基于两点:对做的事情感兴趣能有担当,人好打交道团队氛围自由融洽(像我离开了又回来了)。

回来之后,就开始忙着招人的事情,可是招人的成功率远不像我求职时成功率那么高,大概只有20%的成功率。我想待招聘的事情告一段落之后,或许可以整理一篇《八一八求职的那些事儿》来讲讲从招聘方角度来看求职的一些想法。暂且列举一些目前碰到的常见求职问题:不了解招聘岗位要求,没有职业规划,工作多年却大部分时间在做维护(大公司病,局限于现有成熟框架内某个模块里的修修补补,而对框架以及其他模块却不甚了解),没有求知欲。或许是因为简历大都是从招聘网站上过来的  阅读全文
posted @ 2014-07-10 13:41 罗朝辉 阅读(3077) | 评论 (6)  编辑

     摘要: 众所周知,在使用迭代器遍历 STL 容器时,需要特别留意是否在循环中修改了迭代器而导致迭代器失效的情形。下面我来总结一下在对各种容器进行正向和反向遍历过程中删除元素时,正确更新迭代器的用法。本文完整源码:点此查看
首先,要明白使用正向迭代器(iterator)进行反向遍历是错误的用法,要不干嘛要有反向迭代器呢(reverse_iterator)。其次,根据容器的特性,遍历删除操作的用法可以分为两组,第一组是 list 和 vector,第二组是 map 和 set。  阅读全文
posted @ 2014-07-10 09:42 罗朝辉 阅读(4528) | 评论 (1)  编辑

     摘要: 打算整理一下对 Android Framework 中多线程相关知识的理解,主要集中在 Framework 层的 Thread, Handler, Looper, MessageQueue, Message, AysncTask,当然不可避免地要涉及到 native 方法,因此也会分析 dalvik 中和线程以及消息处理相关的代码:如 dalvik 中的 C++ Thread 类以及 MessageQueue 类。本文将从一个使用 Thread 的简单 应用入手,引入 Thread 这个话题,接下来的几篇文章会依次介绍前面提到的那些主题。  阅读全文
posted @ 2014-07-10 09:22 罗朝辉 阅读(1833) | 评论 (0)  编辑