罗朝辉(飘飘白云)

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

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

移动开发

移动应用相关
     摘要: 在本系列文章的第一篇《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)  编辑

     摘要: 打算整理一下对 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)  编辑

     摘要: iOS 游戏开发教程资源,来自 http://www.raywenderlich.com  阅读全文
posted @ 2012-11-10 22:45 罗朝辉 阅读(1068) | 评论 (0)  编辑

     摘要: 在前文中总结到“ObjC 为每个类的定义生成两个 objc_class ,一个即普通的 class,另一个即 metaclass。我们可以在运行期创建这两个 objc_class 数据结构,然后使用 objc_addClass 动态地创建新的类定义。”今天我们来如何在运行时动态创建类。下面这个函数就是应用前面讲到的Class,MetaClass的概念,在运行时动态创建一个类。  阅读全文
posted @ 2012-01-30 14:05 罗朝辉 阅读(4630) | 评论 (2)  编辑

     摘要: 在前文深入浅出Cocoa之消息中,我简要介绍了ObjC 中消息的基本情况,包括SEL查找,缓存以及消息转发等。在本文中,我要介绍一个很有趣的技术,Method swizzling,通过这个手法,我们可以动态修改方法的实现,从而达到修改类行为的目的。当然,还有其他办法(如 ClassPosing,Category)也可以达到这个目的。ClassPosing 是针对类级别的,是重量级的手法,Category 也差不多,比较重量级,此外 Category 还无法避免下面的递归死循环(如果你的代码出现了如下形式的递归调用,应该考虑一下你的设计,而不是使用在这里介绍的 Method Swizzling 手法,:))。  阅读全文
posted @ 2012-01-05 17:02 罗朝辉 阅读(2493) | 评论 (4)  编辑

     摘要: Three20 是 facebook 开源的一款功能齐全又强大的库,覆盖 UI,network,JSON/XML解析等。其 github 仓库在这里:https://github.com/facebook/three20 ,这个页面也有如何在工程中添加 three20 库的介绍,不过在 Lion 系统下以及 xcode 4.2 下有些许不同,英文好的同学可以参看原文。现整理如下:  阅读全文
posted @ 2011-12-31 17:45 罗朝辉 阅读(2774) | 评论 (0)  编辑

     摘要: NSWorkspace 为应用程序提供如下服务:
1)打开,操作文件/设备,获取文件/设备信息
2)跟踪文件,设备以及数据库的变动
3)设置或获取文件的 Finder 信息
4)启动应用程序。  阅读全文
posted @ 2011-09-05 16:04 罗朝辉 阅读(3153) | 评论 (0)  编辑

     摘要: Core data 是 Cocoa 中处理数据,绑定数据的关键特性,其重要性不言而喻,但也比较复杂。Core Data 相关的类比较多,初学者往往不太容易弄懂。计划用三个教程来讲解这一部分:
框架详解:讲解 Core data 框架,运作过程,设计的类;
Core data应用程序示例:通过生成一个使用 Core data 的应用程序来讲解如何 在 XCode 4 中使用 Core data。
手动创建Core data示例:不利用框架自动生成代码,完全自己编写所有的 Core data 相关代码的命令行应用程序来深入讲解 Core data的使用。  阅读全文
posted @ 2011-09-01 14:14 罗朝辉 阅读(5827) | 评论 (0)  编辑

     摘要: block 是 Apple 在 GCC 4.2 中扩充的新语法特性,其目的是支持多核并行编程。我们可以将 dispatch_queue 与 block 结合起来使用,方便进行多线程编程。  阅读全文
posted @ 2011-08-26 13:23 罗朝辉 阅读(12384) | 评论 (5)  编辑

     摘要: 本文详细讲述了Object-C 中消息的里里外外,涉及类结构class, SEL, IMP,消息的动态绑定,消息转发等。  阅读全文
posted @ 2011-08-15 20:20 罗朝辉 阅读(7937) | 评论 (1)  编辑

     摘要: 有关手机屏幕的几个概念:Screen size, Resolution, Density, dip, dpi, pixel, 色阶。
  阅读全文
posted @ 2011-03-22 16:53 罗朝辉 阅读(646) | 评论 (0)  编辑

     摘要: Objective-C 入门知识

编程工作做久了,最初的新鲜感难免会消磨殆尽。幸好总是会有新的技术闪耀登场,重燃编辑人员的兴趣,Mac OS X 就饱含这样神奇的技术。

---Mark Dalrymple & Scott Knaster  阅读全文
posted @ 2011-03-20 20:48 罗朝辉 阅读(3853) | 评论 (0)  编辑

     摘要: XCode 3.2 常用快捷键  阅读全文
posted @ 2011-03-19 21:24 罗朝辉 阅读(1262) | 评论 (0)  编辑

     摘要: Objective C 与 C++ 两者最大的相同便是: 都是从 C 演化而来的面向对象语言, 两者都兼容标准 C 语言; 两者最大的不同便是: Objective C 提供了运行期动态绑定机制, 而 C++ 是编译时静态绑定, 并通过嵌入类(多重继承)和虚函数(虚表)来模拟实现. Objective C 在语言层次上支持动态消息转发, 其函数调用语法为 [object function], 而且C++ 为 object->function(). 两者的语义也有不同, 在 Objective C 里是说发送消息到一个对象上, 至于这个对象能不能处理消息(也就是说实现了这个函数与否)以及是处理还是转发消息都不会 crash, 而在 C++ 里是说对象进行了某个操作,如果对象没有这个操作的话,要么编译会报错(静态绑定),要么程序会 crash 掉的(动态绑定).
  阅读全文
posted @ 2010-12-26 12:30 罗朝辉 阅读(10419) | 评论 (7)  编辑

     摘要: 在上一篇文章《Android 上实现水波特效》中对水波波幅的计算是针对每一个像素的,效率比较低,尤其是在手机上运行,相当缓慢。我们可以利用线性插值进行优化,这样可以将计算减少一半(MeshSize 为 2)或减少四分之三(MeshSize 为 4),效率得以大大提升,即使是在手机上也能较为流畅地运行。
  阅读全文
posted @ 2010-09-28 11:49 罗朝辉 阅读(1375) | 评论 (0)  编辑

     摘要: 本文中的水波特效算法部分整理自 GameRes 上的资料,原作者 Imagic。我只是在学习 Android 的过程中,想到这个特效,然后就在Android 上实现出来,并在源算法的基础上添加了雨滴滴落特效,以及划过水面时的涟漪特效。 该程序在模拟器和真机上运行速度都较慢,需要进一步优化或使用 JNI 实现,如果你想到好的优化算法,请联系我:kesalin@gmail.com。  阅读全文
posted @ 2010-09-01 13:19 罗朝辉 阅读(3644) | 评论 (0)  编辑

     摘要: Symbian开发入门教程: 环境配置,项目设置,图片资源,中文字符串处理等等  阅读全文
posted @ 2009-07-09 11:31 罗朝辉 阅读(13117) | 评论 (2)  编辑