- 博客(41)
- 资源 (16)
- 收藏
- 关注
原创 Android ProductFlavor
Android Product flavor是根据不同的产品需要来的。例如需要用同一套工程编译不同的客户的apk,不同项目的apk。这样就可以在同一个工程定义不同的产品了。ProductFlavor有两个概念:1.Dimensions(维度) 2.flavor(风味)Dimensions:就例如我们划分的产品flavor:flavor是Dimension里面的细分。例如产品里面根据开发环境不同做区分(dev,stage等)在Gradle编译的时候如果有相应的flavor,会根据flavor进行组合
2022-03-25 16:25:48
3975
原创 Kotlin之SharedFlow和Stateflow
SharedFlowSharedFlow是一个hot stream. sharedflow有以下特点:没有默认值可以保持旧值emit会挂起直到所有的订阅者处理完成public fun <T> MutableSharedFlow( replay: Int = 0, extraBufferCapacity: Int = 0, onBufferOverflow: BufferOverflow = BufferOverflow.SUSPEND)replay:
2022-02-23 13:21:37
2830
转载 Linux后台进程管理
fg、bg、jobs、&、ctrl+z命令一、 &加在一个命令的最后,可以把这个命令放到后台执行 ,如sh start.sh &二、ctrl + z可以将一个正在前台执行的命令放到后台,并且处于暂停状态,不可执行。三、jobs:查看当前有多少在后台运行jobs -l选项可显示所有任务的PID,jobs的状态可以是running, stopped, T
2017-02-07 18:18:35
181
转载 线程同步
线程安全所谓线程安全,就是在多线程执行时不会出现不确定的结果。那么对于线程不安全的情况如何处理呢,这个就需要线程同步的操作来。在linux是通过锁来保证的,锁分为以下几种:1.互斥锁:对共享的资源进行独占,当当前共享的资源没有加锁时,可以对共享资源加锁,当加锁之后其他线程如果想使用就会被阻塞,直到共享资源解锁。2.读写锁:对于共享资源可以有多个读锁,但时只能有一个写锁。3.条件
2016-02-05 21:28:19
284
原创 linux的前台后台进程
前台进程是依赖于控制终端到。后台进程则独立于控制终端。1.使程序后台运行,再命令到后面加上 “&” 就可以使程序后台运行 ./build.sh & 当按了回车之后会显示一个后台运行到序号。2.查看后台到任务,使用命令: jobs 此命令可以显示后台到进程号以及序号3.后台且前台:fg %num 后面到num就是后台进程的序号,而不是进程ID4.前台进程切后台进程:ct
2016-02-02 15:34:26
859
原创 shell 循环语句while的使用
while 的使用:#!/bin/basharray=(chending chenhua chenhong);echo "the member of chen"len=${#array[*]}index=0while [ $index -lt $len ];do echo "the name is ${array[$index]}"let index++d
2013-05-05 17:08:06
569
原创 shell条件语句的使用
之前在看android编译脚本的时候对这个条件语句一直很模糊,今天实际做了一下例子。觉得还蛮好玩的。嘿嘿。#!/bin/bashecho "enter your name:"read nameecho "enter your age:"read ageif [ $age -lt 25 ];then echo "you are very young!"e
2013-05-05 16:33:53
669
原创 shell的输入,输出
如果我们需要在命令行里面需要一些用户交互的内容该如何处理呢?用户输入的东西程序又如何获取呢?例:用户输入用户名,回显用户名.#!/bin/bash printf "enter your name:"read nameecho "your name
2013-05-05 11:16:31
626
原创 who命令的学习
who查看当前登录的用户。who | wc -l :将who的输出作为wc的输入,wc为统计行数,单词数及字符个数,-l 表示统计行数。
2013-05-03 11:36:58
941
原创 Android---Activity初探
刚开始学习android时候以为Activity就是一个应用,最后才发现它并不像brew那样,brew虽然也有组件的概念,可是并没有像android这么清晰,一个应用就是由多个组件组成。Activity就是其中的一个组件,它是专门用来管理视图的,简单来说它就像我们window上的
2011-07-07 16:39:51
900
原创 Android开篇
当android的文章满天飞的时候,我开始了学习android的历程,反映似乎有那么一点迟钝,学习android大概有一个月将近二个月了,之前自己就是做手机终端的,但是用的是高通的东西,在学习的过程中有意无意的总是和之前的架构做对比,看看这些架构设计的优缺点,每学习一个架构都会有
2011-07-07 16:09:55
335
原创 buiw笔记之buiw基础(二)
<br />Form讲解<br />之前讲了buiw的一些基础知识,这篇文章讲一下buiw的组成之一:Form<br />Form即窗体,框架:它是一切控件的载体,它负责了窗体的创建,管理自己widget的生命周期。Form分为三个部分:标题区域,客户区域,软键行区域。Title区域是标题的显示部分,客户区域是显示界面的主要信息,软键行区域显示对应按键的功能。<br />Form有一个重要属性:它可以自己设置自己的处理函数,可以通过调用接口:IFORM_SetHandler,这个接口的功能可以将应用的处理函
2010-11-27 09:19:00
1093
1
原创 BUIW系列笔记之BUIW基础(一)
好久都没有更新过自己的博客了,自己做手机开发也两年有余了,总想写点东西来把自己学到的东西记住,现在最想做的就是把自己学到的buiw相关的东西写出来,供大家参考。从今天开始我将写一系列与buiw相关的知识。如果有兴趣的朋友可以关注。BUIW全称:BREW UI WIDGET(Brew 轻量级的UI控件),有的人可能会疑惑一些,在brew上面不是已经有相关的UI控件了吗,例如IMenuCtrl等。是这样的,用过这些控件的人都知道,这些控件很难用,而且很难做出比较友好的界面系统,为此高通推出了专门用于UI的两套架
2010-11-21 10:56:00
2086
1
原创 应用之间屏幕的管理
如大家所知,每个应用都拥有自己的IDisplay接口,在我们创建接口的时候这个已经由AEEApplet_New已经给我们完成了,但是大家有没有想过,brew是怎么对屏幕进行管理的呢,大家可以想一下当应用A有一个界面,A又去启动了B,这个时候B的界面就显示出来了。大家想想这个时候A的界面为什么没有显示出来呢,为什么只有B的?其实这个就是BREW对刷屏的管理,在BREW里面有一篇文档说的很好,只有处于活动的APPLET才具有画屏幕的权利,那BREW是怎么控制的呢?其实原理很简单,大家都知道IDisplay_is
2010-08-22 23:58:00
731
原创 关于利用sizeof计算extern之后的全局变量的大小
今天用sizeof计算一个extern之后的数字的大小,发现总是0,在编译的时候也已经给报错了,但是就是不知道为什么,最后才恍然大悟。首先sizeof其实在编译期间已经觉得了其计算的大小,extern之后的数组在编译器期间其实只是一个符号而已,不代表任何意义,只有在连接的时候知道了它的地址才会和正在数组的定义的地方连接起来,所以在vc上做如下的操作extern int a[];sizeof(a);首先编译器会给你警告,在运行期间去看sizeof(a)的值总是是0;
2010-06-01 19:28:00
2256
3
原创 Brew的屏幕的拷贝
<br />1. 首先得到当前的设备位图:<br />IDisplay_GetDeviceBitmap(IDisplay *po, IBitmap **ppIBitmap)<br />*ppIBitmap就是输出的设备位图<br />2. 创建一个和设备位图相同格式的位图,对于brew来说主要就是颜色深度这些了,默认的是565的,所谓的565就是RGB个颜色值占的位数<br /> IBitmap_CreateCompatibleBitmap(IBitmap *po, IBitmap **pp
2010-06-01 19:27:00
982
原创 BREW抽象接口机制
大家好,很久没有写过文章了,今天终于提起精神来再聊一聊关于brew的知识了,其实brew里面要学习的东西还是蛮多的。今天我想写一下我对brew抽象接口机制的认识。 其实要说brew的抽象接口机制可以用一句话来概括那就是定义的虚表函数。每个接口的结构体的第一个元素肯定是它的虚表,虚表函数在被实例化的时候被赋值,一个接口的多个实例共享一个虚表函数(对于多实例的接口而言),brew的接口机制其实
2010-05-13 21:14:00
687
原创 RootForm对form的关于及RootContainer对IWidget的管理和事件处理
大家每次在做调试的时候会发现栈会很深,大部分都是在buiw中,初看似乎很复杂,但是如果真正了解流程了,也就没有那么复杂了,现就对自己了解的做以阐述,也请大家指正。先从RootForm的创建开始,RootForm中创建了相关的Display,RootContainer,还有一个很重要的东西就是Form的piwidget,piwidget是从RootContainer中查询出来的,还创建了相应的V
2009-12-28 23:00:00
1441
4
转载 BUIW和BREW的刷屏位图管理
这里主要说一下没有用MDP时候的刷屏管理机制,后面再专文介绍MDP机制。1.系统初始化过程中在AEE_Init()->AEE_Init1()中创建系统设备位图;2.该设备位图会提供一组接口用于维护设备位图,主要是刷屏接口;3.每个APP创建的时候都会建立一个自己的IDisplay接口,其中会建立相应的IBitMap结构,该结构中每个APP都有自己的绘画窗口信息字段和对应缓存区的指
2009-11-04 23:10:00
1210
2
转载 BUIW的架构和消息流程
BUIW的基本框架如下图,这幅图是比较完整的一个结构,ROOTForm通过一个VectorModel管理所有Forms;通过一个RootContainer管理所有Rootform上的widgets和其它form的piwidget成员(XYContainer类型,其它所有Forms都通过自己的piwidget管理自己的子container或子widget)。 插入一个新的Fo
2009-11-04 23:04:00
1044
原创 设计模式在buiw中的体现
前些天一直在看buiw,对buiw有了一些了解,后来在同事的推荐下看了设计模式,发现buiw运用了很多设计模式,先就将自己知道的做一个总结。Chain of responsibil (职责链):使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合度,将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。以上是在设计模式中对职责链的解释,在buiw中的表现最明
2009-11-04 22:08:00
1060
1
转载 关于buiw的一些好东西
BREW UI Widget(BUIW),原名为BREW UI Toolkit(BUIT),是美国Qualcomm公司於2004年以後致力发展的一套全新的UI-package,用以替代早期的BREW关於GUI 设计。最早BREW GUI只提供少数的GUI元件,如∶IMenuCrl, ITextCtl, 这些简单的Controls远远不敷开发厂商的需求,许多厂商必须自
2009-09-04 12:40:00
1650
原创 buiw的MVC模型在ListWidget中的体现
List是大家在手机上常见的一种现实形式,那List在buiw上时怎么实现的呢。一下详细解释。上一篇文章已经给大家讲述过,buiw是基于MVC模型的,所以自然ListWidget也遵从这样的观点,它的数据时放在ListModel中的,那现实的数据时放在一个叫做ValueModel中的.ListModel中存放的是所有的list的数据,但是ValueModel总存放的就只有当前要画的项的数据。那
2009-08-27 22:56:00
1068
1
原创 继承和引用在buiw中的体现
做brew都一年,一直在做应用层的开始,这几天对buiw做了一下学习,发现在buiw中很多面向对象的思想在buiw中都用C语音这种过程语音实现了,感觉真的很神奇,真的对开发buiw的不禁肃然起敬。先对自己了解到的一些知识和大家分享。在面向对象里大家都知道一个类里面封装了数据和实现,在buiw中数据就是它的结构体,实现就是它的一组虚表函数指针,当要继承一个“类”时,将基类现在当前类的第一个数据,
2009-08-26 23:49:00
912
2
原创 对brew接口的一些理解
在brew里有有自己的接口机制,主要是AEE的,有些是可以看到源代码的,一般都是AEE定义接口OEM有源代码实现,很多时候是没有源代码的,brew也支持自己扩展接口,下面说一些我对接口扩展的一些理解。接口一般都是通过这样的形式定义的:第一步:定义函数指针#define INHERIT_IFoo(iname) / uint32 (*AddRef)(iname*)
2009-03-10 20:13:00
720
原创 关于brew applet的一些理解
做上层开发几乎离不开applet,一个独立的模块都会自成一个applet。比如一个短消息模块。Applet有三种状态:运行,挂起,后台。在brew里只能有一个正在运行的applet,后台的applet,只能在处理器不忙的时候去做相应。每个applet都有一个handleEvent函数,这个函数是用来接收AEE发来的事件的。在一个applet在启动的时候都会首先调HandleEvent中的E
2009-03-09 19:26:00
808
原创 关于mp3 tag的一些补充(关于tag的编码方式)
关于mp3 tag的资料很多,大家可以自己去找,大概讲的都是大同小异,但是我觉得他们忘了很重要的一点,也是我忽略的,后来解析文件出错了,才恍然大悟。那就是tag信息的编码。大家都知道每个frame的头是由10个字节组成的,具体内容我就不仔细写了,在着10个字节后有一个字节,大家可以仔细观察一下,只有四种情况 00 ,01,02,03,这个代表什么呢?这个就是表示tag的编码方式的。00代表的就
2009-02-17 19:13:00
3770
原创 基于buiw创建List
static int TestListFrom_CreateItem(TestListFrom *pThis){ int nErr = SUCCESS; nErr = ISHELL_CreateInstance(pThis->a.m_pIShell,AEECLSID_IMAGEWIDGET,(void**)&pThis->piwImg); nErr += ISHELL_Create
2009-01-20 20:41:00
1939
2
转载 一篇关于Unicode编码的UCS、UTF、BMP、BOM等概念的不错的文章
由于要做一些中文话的工作,牵涉到中文的GB2312,GBK,Big5以及Unicode之类的编码,找了一些资料发现下面这篇写的还是相当不错的。很可惜好文章总是很有“中文特色”,一搜一大把同样的文章,转来转去已经找不到原始出处了。作者看到的话(或者哪位知道的话),还请好心告知。下面是文章内容:<!--google_ad_client = "pub-2748932162110627";/*
2009-01-14 12:06:00
567
转载 接口替换技术实例 关于brew的bitmap的使用的实例
接口替换技术实例这是对一篇文章《深入BREW接口机制》文中代码的补充,经过我的调试,对IMENU、ISTATIC接口都是有效的,大家一起探讨一下,会不会存在什么问题。在AEEAppGen.h中加入typedef void (*UpdateFun)(IDisplay * po, boolean bDefer); //数据请求的回调函数指针在结构_AEEApplet中加入变量 Updat
2009-01-05 11:42:00
1196
2
转载 BREW应用的c++实现注意点
做过BREW开发的都知道,不论是用IWINDOW还是StateMachine,都是应用的C语言,而且编译器也是采用的C编译器,而对于具有优良思想的面向对象的C++语言却应用的不多。其实BREW开发是完全支持C++语言的。从VC6.0的调试器来说吧,肯定支持C++语言了,对于ARM或者GCC来说,也是有可用的C++编译器,而且任何支持BREW的手机都可以运行通过ARM或者GCC编译连接出来的目标
2008-12-30 13:18:00
479
转载 数据库技术在BREW中的应用
数据库技术作为一种对信息管理的高效方式,逐渐在业界占据了重要的地位,可以说目前任何类型的IT产品,都或多或少的采用了数据库技术,数据库产品无所不入。BREW作为无线开发环境也提供了数据库技术。那么下面我就对数据库技术作一下分析:BREW数据库是一种简单的关系型数据库,无多任务,无多用户,多记录。它提供给开发者三个接口:IDBMgr,IDatabase,IDBRecord。IDBMgr接
2008-12-30 13:11:00
509
原创 紧张而又充实的生活
在公司上班已经半年多了,前几个月在公司都是在学习,很想干一些事情来做。看到别人在讨论问题,很是羡慕。后来进了810项目组,终于有事做了,很是兴奋同时多了几分害怕,自己从来都没有参加过这样一个庞大而又漫长的项目,一方面怕自己的失误导致的错误,另一方面也是对自己的第一次考验。开始的时候领导就告诉我们,这个项目很紧,所以让大家都要努力,所以从一开始的时候我们就加班,对于我来说加班不用像上班的时候那样紧张
2008-12-27 10:36:00
839
原创 WMA格式文件头解析
wma是微软定义的一种媒体文件格式,它是一种流媒体,由于wma协议是不公开的所以我们就只能通过大量的文件来做分析,简单的分析网上一般都可以找到,下边我就引用别人的一些:ASF文件和WMA文件格式差不多。具体请看下面我写的代码。文件分析根据mplayer其中的asfhead.c提供的代码进行分析。mplayer只解除出了标准的wma头信息,其扩展信息并没有解析出来。代码如下./*每一个WMA文
2008-12-03 18:40:00
8011
1
转载 md5算法
MD5的全称是Message-Digest Algorithm 5(信息-摘要算法),在90年代初由MIT Laboratory for Computer Science和RSA Data Security Inc的Ronald L. Rivest开发出来,经MD2、MD3和MD4发展而来。它的作用是让大容量信息在用数字签名软件签署私人密匙前被"压缩"成一种保密的格式(就是把一个任意长度的字节串
2008-11-28 11:24:00
781
1
原创 代码如衣
进公司大概半年了,这半年里看的代码编的代码比我上大学四年的都多,真是惭愧呀.从中也学到了很多知识.其中一个体会就是代码如衣.我为什么会这样比喻呢?衣服的种类分很多种,有质地好的,有质地不要好的;有好看的,有难看的;有手感差的,有手感好的;有穿起来舒服的,有穿起来不舒服的;好看的不一定舒服,穿着舒服的不一定好看.代码同样一个道理.编代码当然都是为了实现某些功能,可是代码也有好坏之分
2008-11-01 13:44:00
436
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人