浪人的星空

十年磨一剑,历练出锋芒,求知路漫漫,需不断探索之!
私信 关注
alexhilton
码龄13年

能力越强, 责任越大! With great power comes great responsibility!

  • 1,947,804
    被访问量
  • 208
    原创文章
  • 1,366
    作者排名
  • 1,716
    粉丝数量
  • 于 2008-04-11 加入CSDN
获得成就
  • 获得1,625次点赞
  • 内容获得745次评论
  • 获得130次收藏
荣誉勋章
TA的专栏
  • Android
    104篇
  • Android Webkit专题研究
    2篇
  • Productive Programmer Toolbox
    7篇
  • Android Mms专题研究
    11篇
  • Java
    14篇
  • C/C++
    15篇
  • Linux/Unix
    11篇
  • 学习方法
    14篇
  • 经验与总结
    16篇
  • 编程方法
    19篇
  • SMS/MMS
    1篇
  • Tizen 开发
    3篇
  • 生活在职场
    29篇
  • 杂谈
    22篇
  • Python
    1篇
  • 前端
    1篇
  • 健身
    4篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 课程
  • 帖子
  • 收藏
  • 关注/订阅

学习Kotlin,看这一篇就够了

人生苦短,要用Kotlin这是一种对程序猿更为友好的语言,可以减少开发者的工作量,原本由开发者干的事情,其实很多都可以由编译器实现了,这是一种更为高级的语言。Java虽然严谨,但却过于繁琐,太啰嗦了,一个小事情却要写大量的代码,而且有些代码又是非常机械式的,在实际编码过程中都是用IDE来自动生成。Java,C,C++,Object C这些都是上世纪的编程语言。点击阅读全文...
原创
822阅读
0评论
1点赞
发布博客于 3 年前

为猿七年有余,痒否?痛否?

还未有感,已然岁末,犹叹时之箭逝去如斯也,稍纵命再减一。回首望,为猿七年有余已,虽不成气候,亦未全蹉跎。略做小结,以不惘逝去之时日,亦会大益于尔后路途。若博文能助足下之一二,孤将甚悦。
原创
11940阅读
48评论
87点赞
发布博客于 4 年前

说说Android的MVP模式

安卓应用开发是一个看似容易,实则很难的一门苦活儿。上手容易,看几天Java,看看四大组件咋用,就能整出个不太难看的页面来。但是想要做好,却是很难。系统框架和系统组件封装了很多东西,开发者弄几个Activity,用LinearLayout把布局组合在一起,添加点事件监听,一个应用就成型了。红海竞争,不管多么复杂的UX和业务逻辑都是一个月快速上线,二周一个迭代,领导和产品早上改需求,晚上改设计,再加上
原创
5224阅读
8评论
11点赞
发布博客于 5 年前

Android技巧:学习使用GridLayout

GridLayout是一个非常强大的网格类布局,它不但能像TableLayout那样,实现网格类布局,但它更为强大的地方在于每个Cell的大小可以横向或者纵向拉伸,每个Cell的对齐方式也有很多种,而且不像TableLayout,需要一个TableRow,GridLayout可以通过指定Cell的坐标位置就能实现Cell的拉伸,从而实现,大小不一致的风格卡片式布局。基本概念
原创
2743阅读
0评论
1点赞
发布博客于 6 年前

安卓开发技术:监听软键盘的显示与隐藏

自从2007年乔帮主横空出世推出iPhone后,智能手机就都变成了触摸屏,且屏幕越来越大。输入自然也就通过软件来解决,现在来说绝大多数智能设备都是通过软键盘来做用户输入。在日常的开发过程中难免会跟软键盘打交道,比如强制显示或者强制隐藏等,也有些时候想要在键盘隐藏或者显示的时候做一点事情,这就需要准确的知道键盘的事件,这篇文章就来详细讨论一下Android下面如何做到监听键盘的事件。
原创
5657阅读
0评论
2点赞
发布博客于 6 年前

Android应用性能剖析全攻略

性能是软件质量的一个重要方面,好的软件必须要在性能上达到一定的标准。对于Android应用程序来讲,更是如此,移动互联网的红海竞争,如果应用的性能差,肯定会缺少竞争力的,这里就来聊一聊应用开发中如何提升性能,以及在开发过程中如何处理性能问题。性能的定义对于Android应用程序来讲分为三个方面,一方面是软件整体表现上的性能,也就是能多快给用户想要的结果,比如新闻阅读类应用,
原创
2279阅读
0评论
1点赞
发布博客于 6 年前

安卓开发技术:监听软键盘的显示与隐藏

自从2007年乔帮主横空出世推出iPhone后,智能手机就都变成了触摸屏,且屏幕越来越大。输入自然也就通过软件来解决,现在来说绝大多数智能设备都是通过软键盘来做用户输入。在日常的开发过程中难免会跟软键盘打交道,比如强制显示或者强制隐藏等,也有些时候想要在键盘隐藏或者显示的时候做一点事情,这就需要准确的知道键盘的事件,这篇文章就来详细讨论一下Android下面如何做到监听键盘的事件。点击
原创
2194阅读
0评论
1点赞
发布博客于 6 年前

Android Studio技能之快捷键

Android Studio是谷歌新一代的Android开发IDE,老一代的Eclipse+ADT已被无情的废弃。Android Studio基于JetBrains的IntelliJ IDEA,这是一个在Java界享有不错声誉的IDE,它以“Intelligent”著称。AS是谷歌基于IntelliJ开发的,加上了一套专门为Android定制的插件系统。早期的时候AS=IntelliJ +
原创
2425阅读
1评论
1点赞
发布博客于 6 年前

优秀代码赏析:CircleImageView

核心功能实现一个圆形的ImageView,或者说让一个View来显示一个圆形的图片。核心思路这个库短小精悍,全部代码才200多行,核心代码也就几十行,却实现了一个看似不简单的功能。要想实现圆形的图片,常规一般的人的思路,用图像处理的方式来解决,就好比显示圆角矩形图片那样。但是这个库的作者的思路十分的巧妙,它的核心思路就是把图片画在一个圆上面。点击阅读全文
原创
2329阅读
0评论
1点赞
发布博客于 6 年前

如何跳过Nexus 7二代的开机设置

事情是酱紫的Neuxs 7二代,2013年款,14年某宝上面买的,为了体验最新的Android版本,以及奶七的高性价比,于是就买了一个,之后也一直用着比较爽,电影,游戏,看书,看代码,体验原生Android,体验GMS,都是相当不错,直到今年4月份,突然有一天,触摸屏失灵了,在重启了之后,触摸能用了,但是反应不灵,有时要点好几次才有反应,有时则是好的。当时错误以为是装的软件太多了,反应慢,
原创
8853阅读
0评论
0点赞
发布博客于 6 年前

实战技巧:Android异步指南

异步向来都是提高性能的必要手段,当然也是引发问题的常见根源。Android之中更是如此,主线程事关应用的流畅程度,所以把更多能放在工作线程中事,放到工作线程中去,是提升App性能之必经之路。Android中使用线程有多种方式,我们该如何选择,以及在使用过程中要注意哪些问题,今天就来探讨一下。点击阅读全文
原创
2072阅读
0评论
0点赞
发布博客于 6 年前

Android布局技巧:使用TextView的drawable属性

在布局中Icon+文字组成一个视觉上的元素是非常普遍的需求,或者是成为一个可点击的整体,或者是展示某种信息。比如顶部导航栏(ActionBar或者是自已定义实现的类似功能的)都会有一个返回,通常都是一个向左的Icon加上一个文字标签。点击阅读全文
原创
2963阅读
1评论
1点赞
发布博客于 6 年前

CSS Animation初探

动画在交互设计中是一个十分能加分的东西,用以平滑过度,会让用户体验上几个台阶。对于Web开发也是如此,恰当的使用动画可以让网页使用起来更加的用户友好。这里就来探讨一下CSS中一些动画的实现方式,初识前端,不足之处敬请指正。点击阅读全文
原创
2528阅读
0评论
1点赞
发布博客于 6 年前

Android实战技巧:Fragment的那些坑

Fragment是Android在3.0(Homeycomb)版本时加入的用以更灵活的构建多屏幕界面的可UI组件。关于Fragment以基本使用方法可以参考官方的教程和最佳实践,以及选择Activity还是Fragment。 但是Fragment使用起来却远没有教程中说的那样简单,也远比Activity要复杂一些,这里总结了孤在使用Fragment时所遇到的坑。点击阅读全文
原创
3719阅读
0评论
1点赞
发布博客于 6 年前

Android NDK开发的一些技巧

Android NDK(Native Development Kit)是基于Java JNI的使用C/C++和Java来混合开发应用的一种方式,甚至在Android 2.3(API 9)以后可以用Native(Native这个字在不同的语境中意义是不一样的,这里指的是JNI中的C/C++的代码;如果放在Hybrid中Native就是指平台原生的语言和API)代码来创建标准界面组件Activit
原创
2425阅读
0评论
1点赞
发布博客于 6 年前

使用Octopress和Github Pages搭建博客的高级技巧

如何果还不知道如何使用Octopress和Github Pages搭建的同学可以参考码农的救赎:使用Github Pages搭建博客提升速度按照教程搭建好的博客,访问起来总是很慢很慢,即使把什么Google Plus和Google Analyze之类的都关闭掉后,仍然很慢。原因就是在HTML中的某些资源,比如脚本或者字体什么的是使用点击阅读全文
原创
2952阅读
0评论
1点赞
发布博客于 6 年前

在安卓设备与PC之间传递文件

现在智能手机(这里的手机是广义的,包括手机,平板电脑等移动智能设备)在生活中的角色越来越重要,人们使用手机的时间远远大于电脑,由于手机的便携性,所以很多时候我们会需要用手机来携带数据或文件,或者用于娱乐。比如乘坐火车或者汽车时,用手机来看个电影还是相当不错的,现在的手机屏幕也够大,存储空间充足,完全不成问题。虽然移动端也有足够多的客户端可以下载视频等,但是远没有PC资源多,也没有PC下载方便。但是
原创
4081阅读
0评论
1点赞
发布博客于 6 年前

诡异的EOF Exception

近日在写一个简单的HTTP代码中遇到了诡异的EOFException,当读取ResponseCode的时候就抛出了EOF异常,感觉很诡异,下面进行问题还原,以及分析和解决过程.问题有问题的代码如下:点击阅读全文
原创
4196阅读
0评论
1点赞
发布博客于 6 年前

从手机丢失看数据安全

手机在现代生活中扮演重要角色,里面有大量的隐私和数据,手机银行,支付宝等都能操作个人的财产,所以手机的安全也越来越重要,一旦手机丢失,造成的不仅仅是一部手机的损失,还可能造成隐私的泄露,重要数据的丢失以及财产的损失。手机丢失后应该做的事情2015年1月28日下班,晚上七点左右在挤公交车,可能上车时,手机(红米Note)被偷,由于平日里都是骑自行车上下班,只是偶尔遇到不好的天气才会坐
原创
2558阅读
1评论
1点赞
发布博客于 6 年前

下载并编译CyanogenMod源代码

CyanogenMod是除了Android官方源码之外的最受欢迎的Android的一个分支,它是干净,几乎接近原生Android,且方便为设备进行定制,在编译和制作ROM上面较原生有很大改进,是开发者学习源码和自己制作ROM的最佳选择。官方网站在这里.repo在这里.环境说明,本次所有操作都是在Ubuntu 12.04(Precise)里面进行的。另外需要说明的是,我的环境
原创
3602阅读
0评论
1点赞
发布博客于 7 年前

让Android模拟器飞一会

Android模拟器是公认的慢,而且不是一般的慢,即使在高性能的PC上,跟开发环境没关系,因为它就是慢。但是我们又必须使用模拟器,比如在测试Android不同版本的兼容性时,或者在测试不同屏幕尺寸的UI显示问题时,都是需要的。当然我们还是鼓励使用一个真机来调试和测试,模拟器无法取代真机。但是在测试兼容性时,我们还是要使用模拟器,因为即使是BAT也不可能把各种版本,各种屏幕的Android手机都买一
原创
2661阅读
0评论
0点赞
发布博客于 7 年前

不断更新,保持高效

正所谓学历代表过去,学习力代表未来。柯维大师的七个习惯之中的终极习惯就是要“不断更新”,今天的你再牛B,知道的再,如果不去学习,不去提升,不去更新自己,那么总有一天也会被超越,时代在进步,别人在进步,发逆水行舟,不进则退,你停止了学习,就表明你退步了,因为别人在进步。 那么,为了保持能够高效的进行Android开发,我们就必须不断的学习,不断的充电,这些列出一些,能够提高Android开发的进阶教
原创
2034阅读
1评论
1点赞
发布博客于 7 年前

适配多屏幕的最佳实践

对于Android应用开发来讲,比较头疼的,也是比较重要的一个工作就是要尽可能多的支持市场上的Android设备,由于Android的开放性,各种奇奇怪怪的设备都有,符合标准的,不符合标准的,行货,水货,山寨货鱼龙混杂,防不胜防。为了让我们的应用能够得到尽可能多的用户,我们就必须能让应用以超强的适应性,以能在混乱的手机里生存。而适配设备,GUI屏幕的适配又是重中之中,如果用户都无法正确的看到你的U
原创
2007阅读
3评论
1点赞
发布博客于 7 年前

如何有效的减少重复的代码

重复的代码一直都是可维护性的大敌,重构的重要任务之一也就是要去除掉重复的代码,有效的减少重复代码,可以大大提高软件的扩展性。在Android开发中,很容易产生重复的代码。因为Android是组件,模板式开发,每个页面都是独立用Activity或Fragment实现,布局文件都是用XML方式去写,所以很容易造成代码的重复,虽然二个页长的差不多,但毕竟是二个Activity,于是就拷一份出来,
原创
4363阅读
0评论
0点赞
发布博客于 7 年前

使用工具来提升Android开发效率

正所谓工欲善其事,必先利其器。学习并应用优秀的轮子,可以让我们跑的更快,走的更远。这里所指的工具是广义的,泛指能帮助我们开发的东西,或者能提高我们效率的东西,包括:开发工具,监测工具,第三方代码库等。 优质的第三方开源类库点击查看全文
原创
3001阅读
0评论
2点赞
发布博客于 7 年前

Android应用UI架构

这个标题听起来可能有点大,其实这里主要就是讨论一个应用程序的UI组件,是全用Activity还是全用Fragment,或者是二者皆有,以及使用Activity和Fragment的一些注意事项。 Activity or Fragment从API 11,Honeycomb开始,Google在Android之中加入了Fragment,一个轻量级的,可复用的,模块化的UI组件,并且官方也极
原创
3247阅读
0评论
1点赞
发布博客于 7 年前

码农的救赎:使用Github Pages搭建博客

人生若只如初见,都恨太晚据说有博客的人比没博客人的薪水要高很多,相传写博客也是一个高手的标配,虽然之前一直有在写(在这里),但是孤既不是高手,薪水还比别人少。之前一直在CSDN上面写博客,那是一个不错的社区,里面有些牛人,博客也有不错的流量,也没少参与CSDN举办的活动,获得了几本过时的技术书,但是仍感觉不爽,最痛苦的就是编辑,CSDN的在线编辑器做的不咋地,不太好用,而且经常写着写着
原创
2021阅读
0评论
2点赞
发布博客于 7 年前

Android生存指南:Eclipse快捷键

天天使用的东西,可能是因为太习惯它了吧,总忘记学习如何高效的使用它。正的谓磨刀不误劈柴功,找时间好好磨磨刀,于人于已都是有好处的。效率高了,多省出点时间去干自己真正喜欢干的事情吧。精进Eclipse的使用之快捷键篇1. Ctrl+d(CMD+d on Mac)删除当前行,也即删除光标所在的行。其实不光是当前行,也可以先选择多行,然后删除。记住它是以行为单位的。2
原创
3445阅读
3评论
4点赞
发布博客于 7 年前

提起2013,我所领悟到的

1. 先快速解决从无到有的问题, 然后再慢慢升级无论是做一个新的产品, 还是设计新的功能, 首先要解决一个从无到有的问题, 也就是尽可能最快速最简单的能用的版本出来, 然后再慢慢升级. 而不是从一开始就一门心思的想把它做成千万级的或者一流的应用. 那些千万级的应用(微信)等也不是一开始就设计成这个样子, 更不是一开始就有这么多功能, 以及开始时也不会想到有这么成功.快速的从无到有,并发布可以快
原创
4444阅读
6评论
1点赞
发布博客于 8 年前

Android实战技术:类iOSTab和Header

1. Key widgetsTab是Android支持的一种UI布局,Android里面的原生应用Music就是用Tab的方式实现的,API中也有封装的比较好的TabActivity,但是在后来的版本中3.0以后的版本它就是Deprecated的了。因为Tab被绑定到ActionBar上面了。但是我们还是可以按照TabActivity的实现方式来自己实现多Tab效果。现在很多应用都有仿制iOS
原创
4972阅读
1评论
3点赞
发布博客于 8 年前

Android实战技术:理解Binder机制

Android中的RPC(IPC)是由Binder组件来实现的,虽然我们使用更多的还是AIDL,并不会直接使用Binder,但是了解了它能更有效帮助理解AIDL以及理解Android本身的一些原理和机制。Binder的架构与其他的Android系统的组件的架构类似,Binder也是由Java层封装,JNI,libbinder和driver组成。Binder的主要组成有三个IIn
原创
16937阅读
1评论
9点赞
发布博客于 8 年前

Android实战技术:深入理解Android的RPC方式与AIDL

Understanding ADILAIDL是一个接口描述文件,用于实现Android平台上面的RPC,aapt在编译的时候会自动根据规则生成用于IPC的接口和对象,而作为使用者只需要:1.在服务端Service实现接口;2. 在客户端bindService,onServiceConnected时获取接口对象。这里的接口都是AIDL中描述的接口,其他的细节则在由AIDL生成的同名源码文件中。
原创
26685阅读
6评论
15点赞
发布博客于 8 年前

Android实战技术:IPC方式简介教程

非实时,通知性的方式第一种方式就是Intent,Intent可以非常方便的通讯,但是它是非实时的,无法进行实时的像函数调用那样的实时的通讯。实时的函数调用但是IPC的根本目的还是为了实现函数的调用,即使是传递数据也是要通过函数调用的方式,为什么呢?因为程序运行总是要知道状态,要有逻辑上的行为,因此必须通讯函数才能体现出行为。IPC的机制除了进程,或者说不同的应用程序之间
原创
9070阅读
0评论
2点赞
发布博客于 8 年前

老鸟的Python入门教程

重要说明这不是给编程新手准备的教程,如果您入行编程不久,或者还没有使用过1到2门编程语言,请移步!这是有一定编程经验的人准备的.最好是熟知Java或C,懂得命令行,Shell等.总之,这是面向老鸟的,让老鸟快速上手Python教程.为什么总结这样的一个教程我虽不是老鸟,但已熟悉Java,C/C++, Shell和Perl,且对常见的数据结构和算法等都了解.最近因项目需要,要做一个小工具
原创
191440阅读
40评论
78点赞
发布博客于 8 年前

Sed和AWK入门教程之AWK篇

AWK是一门专门用于文本处理的编程语言.是的,它是编程语言,它的目的仅有文本处理,所以你不能用它写系统软件,或者做科学计算(当然,它也能做数学计算),它只能用于文本处理.与sed不同,AWK具有编程语言的特性,有内置函数,有逻辑语句,有输入输出语句,其实它看起来很像C语言,只不过所有功能集中于文本处理.与Sed不同,AWK最强大的功能在于处理结构化的文本,也就是说文本有一定的组织结构的.
原创
6139阅读
0评论
2点赞
发布博客于 8 年前

Sed与AWK入门教程之Sed篇

Sed和AWK是*nix命令行里面文本处理的神器,相当的强大.它们都是面向行的,或者说它们处理文本的方式都是一行接着一行的处理,从标准输入或者文件中读取内容,一行一行的执行脚本命令,然后打印输出到标准输出,直到文件结尾(EOF).SedSed是一个流编辑器(Stream editor),它的功能在于对于一个输入流进行编辑和处理.相当于是对一个输入流进行脚本性的编辑.其实它就是对一个输入
原创
20880阅读
6评论
4点赞
发布博客于 8 年前

Android实战技术: 用Dimension解决多屏幕适配的问题

开闭原则--可变与不变的分离,且容易定制应用程序的目的是尽可能做到适用于多种设备,这些设备的配置不尽相同,有些不同的物理尺寸,分辨率.为了达到最佳的适配效果,和最少的代码重复,以及最好的可扩展性,就需要分离资源的使用和资源.用一个统一的资源管理者来管理资源.代码通过资源管理者提供的统一的接口来获取资源.这样对于使用者来讲资源的获取的方式是统一,资源者无需关心如何为不同的设备获取不同的资源.这样
原创
32192阅读
5评论
12点赞
发布博客于 8 年前

Android实战技巧: ListView之ContextMenu无法弹出

问题Activity中使用了ListView作为布局.当每一列表项中含有默认能获取焦点的子View时有可能会对ListView的某些事件有影响:1. OnItemClick2. OnItemLongClick3. ContextMenu这三个事件都无法正确响应.对于ContextMenu.首先要在onCreate中注册Activity的ContextMenu到Lis
原创
5504阅读
0评论
2点赞
发布博客于 8 年前

Android实战技巧: ExpandableListView滑动时会变黑

问题有一个简单的ExpandableListView用于显示某一天下面的事件列表。为了符合整体的风格,把窗口的背景设成了白色,把ExpandableListView的背景也设置成了白色!一切都很好,但突然发现,当滑动的时候,ExpandableListView会变黑!甚是奇怪。刚开始以为是Focus的问题,调整了不管用。后来,调整了每个GroupItem和ChildItem的背景,把它们的背景
原创
6284阅读
0评论
4点赞
发布博客于 8 年前

Vim高级进阶之ex命令集

ex是Vim对行编辑器ed的支持.ed是一个面向行的编辑器.在远古时代,还是黑白终端的时代,有一个流行的面向行的编辑器ed,也即把文件一行一行的读入,一次只显示一行,然后编辑这行.所以Vim中的ex命令都是ed编辑器所支持的命令,现代所用的流编辑器sed中的命令是ed命令的扩展.所以掌握了Vim中的ex编辑命令,稍加变通就连sed也一起搞定了.Vim是全屏编辑器,因此不会像ed那样只显示一
原创
9299阅读
0评论
3点赞
发布博客于 8 年前

五年专业编程的14个经验

这里并没有特定的顺序:1. 当遇到性能问题时,如果可以在应用程序层上评估或处理,那么就把它从数据库层中拿出来."按XX排序"和"按XX组合"就是典型的例子. 应用程序层总是比数据库层容易测量.这对服务器上的MySQL和手持设备上的SQLite都是一样的.HackerNews上有一些很好的评论,所以这里我澄清一下:我们仅为了某些特定的查询做这些,不是为了提升某个客户的反应速度,而是为了减轻复
翻译
3007阅读
2评论
1点赞
发布博客于 8 年前

可评审代码之道

如何组织改动的一些建议.这篇文档是纯建议性的.Phabricator(一个源码审查工具)可以与很多源码控制策略一起使用,这篇文档中的建议产生的差异不会影响到把Phabricator作为代码审查和源码管理的使用.概览这篇文档描述了一个在Facebook和Phabricator中被成功的应用结构化改动的策略.大体上:每次提交应该尽可能的小,但不能再小了一次提交要小到
翻译
3468阅读
0评论
1点赞
发布博客于 8 年前

为什么仍还用C编码?

作者Andrew Binstock概述:作者论述了C语言仍然屹立不倒,长久不衰的原因:过去C语言在性能和可移植上面有巨大优势,但随着时间的流逝其他语言(C++等)在性能和可移植上与C的差距越来越小.但为什么C还很火.作者认为是因为C语言的简洁性,使它在系统级别上仍然无可替代.但是对于应用程序开发还是选择其他语言较好,因为开发效率更重要.正文:偏好C而非C++的传
翻译
4267阅读
0评论
1点赞
发布博客于 8 年前

doxygen完整示例

完整的如何使用Doxygen的例子,包括书写文档块,配置和生成的文档!
gz
发布资源于 8 年前

如何用doxygen生成文档

Doxygen是一款基于源代码生成文档的工具,类似于Java中的javadoc.概念:文档和注释的区别文档(Documentation)是给代码的使用者准备的,或者是更高一级的开发者或者是用户,主要是告诉使用者如何更好的使用代码.典型例子就是API文档.注释代码的一部分,解释代码为什么这样写,是给代码的维护者准备的.优秀且可读的代码应该不需要注释,但文档应该是必须有
原创
9653阅读
1评论
4点赞
发布博客于 8 年前

gbs使用手册之gbs chroot

子命令chroot允许用户chroot到gbs build生成的buildroot(编译环境)目录.可以使用如下方法获得基本的使用帮助:$ gbs chroot --help注意:build root的默认位置是在~/GBS-ROOT/local/scratch.{arch}.*,如果在运行gbs build时使用了-B选项,则这个路径会不同.实例:创建build ro
翻译
3477阅读
0评论
1点赞
发布博客于 8 年前

gbs使用手册之gbs build

开发者可使用gbs build在本地编译源代码然后生成RPM包.使用这个命令:gbs build --help可以获取关于子命令build的帮助指南.gbs build -hgbs build工作流程gbs build所需输入下面所列的是gbs build的输入:包含RPM打包文件的一个(或多个)git项目二进制RPM软件包仓库(远程或本地)项目编译的配置选项(宏,开关
翻译
7244阅读
0评论
2点赞
发布博客于 8 年前

gbs使用手册之配置文件

Git Build SystemGBS(git-build-system) 是支持Tizen软件包开发的面向开发者的命令行工具.它被用来基于Git仓库生成压缩包(tarball),还能用于本地编译,还可以用于提交代码到OBS(Tizen的主要的编译服务)这部分包含更加详细的GBS信息.我们建议您首先阅读一下"开发环境的搭建"章节.配置文件(Configuration
翻译
4234阅读
0评论
1点赞
发布博客于 8 年前

短信技术的几个基本概念

1. 短信的有效期(validity period)如果接收手机离线,一条短信会暂时存储在短信服务中心.也可以给短信设置一个时间期限,就是短信过多久才会从短信服务中心删除,这样一来即使是接收手机转成在线短信也不会被发送给接收手机.这个时间期限就叫做有效期.举个例子来说明如何使用有效期.比如你现在发现电视播放的某个节目非常的有意思,你的朋友没准也想观看一下.因此,你发了一条短信把电视
翻译
5468阅读
1评论
2点赞
发布博客于 8 年前

好的程序员应该第一时间去Google

我所知道的最好的程序员是在Framebase.io的技术合伙创始人.我不晓得他是怎么做到的,但是他对Google的使用远胜于我.你应该知道这句名言:         "绝不要去记忆那些很容易在书中查到的东西" ---- 爱因斯坦所以,除非你已经把排序算法熟记于心,要不然为什么要花2个小时自己去思索呢?最糟糕的是,当你能从某些之前做过的人那轻易的找到时,为什么还要从零开始重新实现
翻译
2671阅读
3评论
4点赞
发布博客于 8 年前

参数声明中的静态数组索引:一个不错且鲜为人知的C语言特性

C语言的创造者们一定都热衷于让关键字的数目尽可能的少.今天将向你展示另一个可使用C99中static关键字地方.也许你已经看到过在数组的参数声明中包括数组的长度:void foo(int myArray[10]);这样的函数仍可接收整数指针int *,但是长度[10]可以对阅读代码的人们可当作文档,传达着这相函数预期一个长度为10个整数的数组的信息.
翻译
3554阅读
0评论
3点赞
发布博客于 8 年前

常见面试题之C++

1. struct与C语言中的struct有何区别在C语言中, struct仅用于定义复杂数据结构,也主是说它只能定义数据,它的成员只能是数据类型,不能直接定义方法函数。在C++中,struct除了C中的用途外,还可以像class一样,可以定义成员方法函数。2. struct与class的区别共同点:它们都可以定义面向对象中的类:定义成员数据和成员方法函数。区别
原创
2718阅读
0评论
2点赞
发布博客于 8 年前

C语言中编译相关的常见错误

1. /usr/lib/gcc/i686-linux-gnu/4.6/../../../i386-linux-gnu/crt1.o: In function `_start':(.text+0x18): undefined reference to `main'collect2: ld 返回 1Reason: no main function in source file2.
原创
6626阅读
1评论
3点赞
发布博客于 8 年前

如何玩转ELF(*.so)

Shared library can be confusing and erroneous. It is very vulnerable to get "undefined symbols" error. There are some good tools can be used to analyze the so file and help us to locate the error.A.
原创
4328阅读
0评论
1点赞
发布博客于 8 年前

Android开发:实践TDD的一些建议

最近部分采用了TDD的方法来开发一个模块,小有收获特此总结一下:1. TDD的基本原则TDD的最核心思想就是先明确需求,且用代码的方式量化,明确需求标准,然后进行编码实现以达成由代码测试来衡量的标准。那么它要求,先把需要标准写出来,每次只写一个。编码实现通过达到,并刚好满足这个标准。这样一点一点的迭代。这样有三个好处:一个是先明确标准,不至于我们迷失主题,偏离方向。有标准在检测,保
原创
4024阅读
0评论
1点赞
发布博客于 8 年前

重构的几点注意事项

最近又温习了一遍Martin Flower的经典名著《重构:改善既有代码的设计》,感触颇多,应该总结一下:1. 重构是减缓代码腐化的有效武器现在很少有软件完全是从0开始开发,也很少有软件有很短的生命周期(2年)以下。那么,换句话说,很多时候你拿到的都是既有代码,它能工作,也许它的设计很好,也许很乱,但它肯定能工作。即使是优质的项目,当初的设计,架构非常合理,代码很优质,但随着时间的
原创
6648阅读
1评论
6点赞
发布博客于 9 年前

AsyncTask的坑,Handler,Looper与MessageQueue

AsyncTask的隐蔽陷阱先来看一个实例这个例子很简单,展示了AsyncTask的一种极端用法,挺怪的。public class AsyncTaskTrapActivity extends Activity { private SimpleAsyncTask asynctask; private Looper myLooper; private TextV
原创
14271阅读
8评论
20点赞
发布博客于 9 年前

如何更有效的进行面试

面试是一个永恒的话题,也是这一辈子必不可少的一部分,无论是对于公司还是个人而言。如何能更好的找人和找工作也是一个值得探究的问题。针对不同角色面试官和应聘者,结合自身的经验,总结了一些能让面试更有效率的建议:对于公司和面试官明确需求:到底需要什么样的人招聘中的面试应该是按照需求来选择人,就好比体育选拔赛,制定一定的标准,然后对应聘者进行测试(通常为笔试和面试)然后择优录取
原创
6413阅读
5评论
7点赞
发布博客于 9 年前

The Artist’s Guide to GIMP, 2nd Edition

The Artist’s Guide to GIMP, 2nd Edition 英文原版 The GIMP, an image editor whose power and ease-of-use rivals that of Adobe Photoshop, is one of the world's most popular free software projects. Artists and designers have relied on the GIMP since 1995 to retouch photographs, composite multiple images, and create new artwork from scratch. The Artist's Guide to GIMP Effects shows you how to harness the GIMP's powerful features to produce professional-looking advertisements, impressive photographic effects, as well as logos and text effects. And author Michael J. Hammel, who has used the GIMP since its first public release, won't mince words or waste your time. His extensively illustrated, step-by-step tutorials are perfect for hands-on learning and experimentation. After a crash course in using the GIMP's interface and core tools (such as brushes, patterns, selections, layers, modes, and masks), you'll learn:

Photographic techniques to simulate ripped edges, create sepia-toned antique images, swap colors, produce motion blurs, alter depth of field, and even fix rips in an old photo Web design techniques to create tiled patterns, navigation tabs, rollovers, and fancy buttons and borders Type effects to create depth, perspective shadows, metallic and distressed text, and neon and graffiti lettering Advertising effects to produce movie posters and package designs; simulate clouds, cracks, cloth, and underwater effects; and create specialized lighting Interface design tips for creating textures, navigation bars, and buttons Whether you're new to the GIMP or you've been playing with this powerful software for years, The Artist's Guide to GIMP Effects is sure to teach you some new tricks. Visit the book's companion site for additional tutorials and resources. http://www.graphics-muse.org/artistsguide/
pdf
发布资源于 9 年前

Android实战技术:ListView刷新的顺序问题

背景一个典型的ListView,每个Item显示一个TextView,代表一个Task,需要实现二个编辑方式:一个是用CheckBox来标识任务已经完成,另一个要实现的编辑是删除任务。对于完成的CheckBox就直接放在布局中就可,但对于删除不想使用ContextMenu来实现编辑,对于像iOS中那样的列表,它的删除都是通过对列表中每个项目的手势来触发。这个实现起来并不难,可以用一个ViewS
原创
5985阅读
2评论
4点赞
发布博客于 9 年前

Android应用“今日事今日毕”发布了

今日事今日毕,这是高效工作的最重原则。没有什么能比从待办事项列表里划掉一些条目更让人觉得舒服的事了。做为一个高效的人,您需要一个优秀的待办事项管理工具,一个优秀的待办事项列表可以帮助你更加高效的完成一天的任务。今日事今日毕是款优秀的待办事项管理工具,它可以方便,简洁快速的帮您安排一天内要做的任务。无论是待办事项,购物清单,甚至是临时记事都可以用它来完成。没有繁杂的日期和时限设置,没
原创
5112阅读
3评论
1点赞
发布博客于 9 年前

Android实战技巧:深入解析AsyncTask

AsyncTask的介绍及基本使用方法关于AsyncTask的介绍和基本使用方法可以参考官方文档和Android实战技巧:多线程AsyncTask这里就不重复。AsyncTask引发的一个问题上周遇到了一个极其诡异的问题,一个小功能从网络上下载一个图片,然后放到ImageView中,是用AsyncTask来实现的,本身逻辑也很简单,仅是在doInBackground中用HTTP请求把图
原创
104287阅读
87评论
104点赞
发布博客于 9 年前

Android Ticks: display text vertically

TextView of Android is a text label to display text. But it can show text only horizontally by default, left to right or right to left. There are some chances that we would like to show text verticall
原创
3458阅读
1评论
4点赞
发布博客于 9 年前

Android实战技术:Splash的实现

什么是SplashSplash也就是应用程序启动之前先启动一个画面,上面简单的介绍应用程序的厂商,厂商的LOGO,名称和版本等信息,多为一张图片,显示几秒钟后会自动消息,然后显示出应用程序的主体页面。在PC上,很常见各种平台的应用程序都会有,多半是一张图片显示在屏幕中央,如Microsoft Office系列,或者GIMP等。在各种游戏中Splash是最常见的,几乎所有的游戏开始都会有一张全屏
原创
29606阅读
9评论
8点赞
发布博客于 9 年前

Vim进阶技术:搜索和替换

行内搜索行内搜索,也就是在当前行内进行搜索和移动,通常都与编辑命令一起使用。fx -- 移动到下一个字符x的位置,光标停留在x字符上面tx -- 移动到下一个字符x的位置,光标停留在x前一个字符上Fx -- 移动到前一个字符x的位置,光标停留在x字符上面Tx -- 移动到前一个字符x的位置,光标停留在x后一个字符上; -- 重复前一个搜索,向着同一方向,即原来向前就向前,原来向后就向后
原创
12809阅读
0评论
3点赞
发布博客于 9 年前

一道面试题:餐馆模拟

前阵子遇到一个面试题,当时没有做出来,后来断断续续的用了一周的时间做了出来,但感觉也不完全对,先来看看题目,稍后再讨论。问题模拟一个餐馆,三个厨师,二个服务员,厨师单独做菜,2分钟一个菜,服务员单独送菜10秒一个分析一看这问题就知道考查的点是多线程,生产者与消费者模型的模拟类问题,《Java编程思想》中有类似的例子,但是这个问题比书中的例子要复杂一些,因为厨师和服务员都有多个,所以
原创
3427阅读
2评论
5点赞
发布博客于 9 年前

Android实战技术:Cursor相关的性能问题

当数据库中存有大量数据的时候,用Cursor查询时要注意,有可能引发性能问题。数据库查询出来的Cursor都会由一个CursorWindow来进行数据管理,包括内存空间的申请和数据的填充。CursorWindow对Cursor中的内容大小有限制,限制为1024*1024也就是1M,换句话说Cursor中数据的大小不能超过1M,如果超过1M会引发如下的错误:08-23 05:48:31.838:
原创
5884阅读
0评论
3点赞
发布博客于 9 年前

年中总结:一些工作和技术相关的想法

1. 不要为过去买单不要活在过去,今天才是最最重要的,明天更重要。不要弥补过去,那样会错过今天和明天,更会把自己迷失在过去的阴影中,会造成总是犯错,又总是为过去改过,于是生活在一个怪圈之中。2. 量化目标,把目标具体化千万别把一些:掌握,熟悉,高级,专家等一些非常抽象的标准作为你的目标,仔细想一想:什么叫掌握,什么叫熟悉,什么叫高级什么又叫专家呢?这些东西不同的人会有不同的理解
原创
3154阅读
3评论
4点赞
发布博客于 9 年前

WebKit技巧:如何用GDB进行调试

对于Android中的Webkit(libwebcore.so),因为它是系统底层的库,所以没有办法像App和Frameworks那样直接用Eclipse来调试,因为它们都是C和C++语言,所以对于它来讲只能用GDB来进行调试。何时用到GDB来调试个人认为,并不是所有问题都立马上GDB来调试。因为Webkit的代码十分巨大逻辑也十分的复杂,所以直接用GDB,可能不是很直观,你无法在合理的位
原创
5410阅读
0评论
2点赞
发布博客于 9 年前

Webkit实战技术:如何添加日志信息

调试日志信息调试日志都是由宏来定义和实现的,并由另外定义的宏来作为开关。日志开关Webkit中只有JNI部分是有Log日志的,其他代码都没有加入日志。JNI部分常用的LOG有:DBG_SET_LOG      在external/webkit/Source/WebKit/android/jni/PictureSet.h中定义,开关为PICTURE_SET_DEBUGDB
原创
6057阅读
1评论
2点赞
发布博客于 9 年前

给大一新生的建议

1. 好好利用高考结束后的暑假这个暑假非常的长,是高中三年痛苦生活的一次小补偿,要好好的利用。第一:好好的放松一下,最好选择去某个地方进行一次长途旅行,可以和父母亲人一起,但我更建议跟要好的朋友和同学几个人一起去,这样不仅可以锻练自己的独立做事的能力,更能增进朋友之间的友情,另外,由于都是同龄人,想法行为会更一致,会让旅途更加的愉快!第二:好好的陪伴一下家人,你要明白随着人的成长,跟家
原创
7795阅读
3评论
8点赞
发布博客于 9 年前

写给即将毕业的同学们

纷纷的雨季送来了别离,一年又一年,又一大批学生即将离开学校,结束学生生涯,开启人生的另一个征程!回首自己走过的路,总结了下,写点东西出来,不敢说是忠告或是什么经验,但是至少没坏处!1. 回首过去,思考人生找一个安静的地方,听着音乐,闭上双眼,慢慢的回忆过去,一点一点的回忆,发生的事情,做过的事情,犯过的错误,特别是你曾经没做好的事和做的满意的事情等等。回首过去,思考那些
原创
4936阅读
2评论
4点赞
发布博客于 9 年前

16岁的博士----神童还是悲剧?

本来不想写这篇文章,关于16岁全国最年轻博士(其实也是最年轻的硕士和本科生)这个故事在2011年四五月份的时候就听说了,当时有一个小电视,每天都当背景音乐在放着,有一天晚上就报道了16岁神童的故事,第一感觉是这孩子真苦。今天浏览CnBeta时突然又看到了这个消息,一细看原来都是以前的旧报道,内容跟以前电视采访是一样的,于是先大骂一下CB,又思考了一下,觉得应该写点什么(但后来CB好像把这篇文章删除
原创
3805阅读
0评论
0点赞
发布博客于 9 年前

Android线程解惑

一个应用只有一个线程在默认情况下,更确切的讲一个进程中只有一个线程,这跟其他语言,比如C/C++,Java等是一致。也就是说在Android应用程序里面一个进程只有一个线程,所有组件都运行在一个线程里面!当应用程序启动时,系统会为其创建一个进程,也会创建一个线程名字叫做main,所有其所属组件的创建,系统事件的处理,系统的回调等一切应用相关的事情都运行在此名叫main的线程中。此线程即为常
原创
6102阅读
2评论
3点赞
发布博客于 9 年前

如何快速接手一个项目(内部项目或开源项目)

1. 了解项目读相关的文档和文章,起码要知道这个项目是用来干嘛的,有什么样的功能,运行在什么上面(手机,PC,或多平台),发行许可(GPL,Apache或者??),目标格式(应用程序,库,中间件等)等等。通常这些问题在项目的文档,Wiki,FAQ等地方都 能找到。2. 获取源代码这不用多说,没源码你还研究个啥,这个官方文档会讲,通常都是通过SVN或GIT,当然也有把源码打包下载的(
原创
12087阅读
3评论
9点赞
发布博客于 9 年前

一个合格的软件开发者所应拥有的

日常工作必备技能: 这些东西是不是每天都用用到呢Unix/Linux Shell:如果用Unix/Linux系统,必须要学会Shell,目的是写一些自动化脚本,看看《Productive Programmer》和《Pragmatic Programmer》,其实很多事情不用手动去做,电脑会帮我们无差错的完成,一次又一次毫无怨言,人可没这么好。Windows BATCH:必然会用到Windo
原创
3290阅读
0评论
5点赞
发布博客于 9 年前

Platform-independent is Nothing

Last Friday I had to process some text files, adding some tags before some patterns in a text file. Perl is born for such a task. I first copied all the patterns into a file in Windows XP, then I swit
原创
2366阅读
0评论
3点赞
发布博客于 9 年前

Android天下大乱,Google无法一统山河

Android是一个了不起的系统,现在设备量很大,但是其利润却可怜,虽然仍在高速发展,但其前景并不乐观。1. 分裂化严重现在市场上有近千种Android设备,各自之间有着大大小的差异,这给应用开发者带来无尽的困扰,为了能让应用适配更多的设备,唯有购买多多的设备进行一一的测试,这无疑会加大开发成本,延长开发周期,这很伤开发者的心!看看最近的报道吧,香港的一家应用公司买了400多个Andr
原创
5409阅读
7评论
9点赞
发布博客于 9 年前

Android生存指南:解Bug策略和思路

现在维护和定制Android的需求越来越多,做的人也越来越多,而Google直接Release出来的源码中又有很多Bug和不合理的地方,特别是原生的应用,如Mms,Browser, Email, Contacts等。定制或做Android解决方案第一步就是要修复原生的Bug以得到一个稳定的系统。1. 仔细观察Bug的特性了解Bug所涉及的流程和模块有哪些,以及是什么样的Bug,Exce
原创
5194阅读
2评论
3点赞
发布博客于 9 年前

Android生存指南:一些开发注意事项

1. 为Activity声明系统配置变更事件系统配置变更事件是指转屏,区域语言发生变化,屏幕尺寸发生变化等等,如果Activity没有声明处理这些事件,发生事件时,系统会把Activity杀掉然后重启,并尝试恢复状态,Activity有机会通过onSaveInstanceState()保存一些基本数据到Bundle中,然后此Bundle会在Activity的onCreate()中传递过去。虽然
原创
7016阅读
4评论
8点赞
发布博客于 9 年前

Android实战技巧:Dialog

Dialog是任何系统都必须有的一个控件,作为辅助窗口,用于显示一些消息,或请求用户采取一引起操作等。在Android中也不例外,基本使用可能参看文档。使用时的注意事项1. BACK键能取消掉对话框(dismiss),但是却不会触发其onOkey和onCancel回调接口,所以如果你的对话框会改某些状态,一定要注意还有第三种方式取消对话框。2. 尽量少用模态对话框(Model
原创
12581阅读
1评论
5点赞
发布博客于 9 年前

Android组件间通信机制对面向对象特性的影响

组件的特点对于Android的四大组件Activity, Service, ContentProvider和Service,不能有Setter和Getter,也不能给组件添加接口。原因是组件都是给系统框架调用的,开发者只能实现其规定的回调接口,组件的创建与销毁都是由系统框架控制的,开发者不能强行干预,更没有办法获取组件的对象。比如Activity,Service,BroadcastReceiv
原创
4190阅读
1评论
4点赞
发布博客于 9 年前

Android实战技巧:Handler与线程间通信ITC

在上篇文章中谈到了Handler是用于操作线程内部的消息队列,所以Handler可以用来线程间通信ITC,这种方式更加安全和高效,可以大大减少同步的烦恼,甚至都可以不用syncrhonized。线程间通讯ITC正常情况下函数调用栈都会生存在同一个线程内,想要把执行逻辑交换到其他线程可以新建一个Thread,然后start()。另外一种方法就是用ITC,也即用消息队列来实现,线程需要把执
原创
6548阅读
0评论
2点赞
发布博客于 9 年前

Android实战技巧:Handler

Handler之消息循环Handler是用于操作线程内部的消息队列的类。这有点绕,没关系,我们慢慢的来讲。前面Looper一篇讲到了Looper是用于给线程创建消息队列用的,也就是说Looper可以让消息队列(MessageQueue)附属在线程之内,并让消息队列循环起来,接收并处理消息。但,我们并不直接的操作消息队列,而是用Handler来操作消息队列,给消息队列发送消息,和从消息队列中取出
原创
6736阅读
1评论
2点赞
发布博客于 9 年前

Android实战技巧:消息循环与Looper

Understanding LooperLooper是用于给一个线程添加一个消息队列(MessageQueue),并且循环等待,当有消息时会唤起线程来处理消息的一个工具,直到线程结束为止。通常情况下不会用到Looper,因为对于Activity,Service等系统组件,Frameworks已经为我们初始化好了线程(俗称的UI线程或主线程),在其内含有一个Looper,和由Looper创建
原创
27668阅读
7评论
4点赞
发布博客于 9 年前

Android实战技巧:多线程AsyncTask

Understanding AsyncTaskAsyncTask是Android 1.5 Cubake加入的用于实现异步操作的一个类,在此之前只能用Java SE库中的Thread来实现多线程异步,AsyncTask是Android平台自己的异步工具,融入了Android平台的特性,让异步操作更加的安全,方便和实用。实质上它也是对Java SE库中Thread的一个封装,加上了平台相关的特性,
原创
22886阅读
3评论
11点赞
发布博客于 9 年前

RTTI:获取类的详细信息

通过RTTI,Class类和Reflection可以获取某个类的详细信息,包括其没有Public出来的信息,先看一个实例:public class ClassExtractor { /** to discard qualifiers */ private static final Pattern pattern = Pattern.compile("\\w+\\.");
原创
2716阅读
0评论
1点赞
发布博客于 9 年前

Android Browser的配置管理

Settings是WebView提供给上层App的一个配置Webview的接口,每个WebView都有一个WebSettings,要控制WebView的行为,只能通过WebView.getSettings()获取WebSettings对象的引用,然后再改变它的属性。Browser有一个BrowserSettings用来管理所有的配置信息,它是一个单键(Singleton)。BrowserSet
原创
4373阅读
1评论
3点赞
发布博客于 9 年前

高效能程序工具之ctags和Vim

ctags是用于产生源码文件之间的交叉引用的一个工具,它扫描源码文件,生成一个tags文件来记录其内的引用关系。这个tags文件可以被源程序编辑器识别,进而非常方便浏览多个源程序。命令格式ctags [options] [files]常用选项-R 递归式处理子目录因为ctags的默认选项比较多,所以很多时候不用指定其他的选项。最常用的方式在某个源码目录下运行ctags
原创
4411阅读
1评论
1点赞
发布博客于 9 年前

高效能程序工具之grep

grep是global regular expression pattern,意思是全局正则表达模式匹配。通俗来讲就是用于模式匹配,或者叫做查找。它有几个变体:egrep ---- 相当于grep -efgrep ---- 相当于grep -frgrep ---- 相当于grep -r这几个不是很常用,已经是Deprecated,建议还是用grep。命令格式grep [opti
原创
3144阅读
0评论
1点赞
发布博客于 9 年前

南京谷歌开发者社区成立了

谷歌开发者社区GDG(Google Developers Groups),以前的名字是GTUG(Google Technology Users Groups)。是由谷歌主办诣在学习各种开源的先进技术,特别是学习谷歌的技术如Google Maps, Android和HTML5,WebGL等一些非常新兴的技术的由开发者组成的。它鼓励开发者加入,参与学习各种线上线下的技术活动,竞赛等等社区。谷歌有专门的
原创
8827阅读
0评论
3点赞
发布博客于 9 年前

深入浅出Windows BATCH

1.什么是Windows BATCHBATCH也就是批处理文件,有时简称为BAT,是Windows平台上的一种可执行脚本,与*nix(Linux和Unix)上的Shell脚本和其他的脚本(Perl,Python)等是一样的,实质上就是一个文本文件,但是用特定的软件去解释的时候,就变成了可执行脚本。在Windows上,可执行脚本就是BATCH文件,也叫批处理文件,这是从DOS时代遗留下来的名字,
原创
34645阅读
2评论
6点赞
发布博客于 9 年前

Android SDK弱爆了---在64位Linux机器上使用的同学注意了

由于机器内存坏了,换了个内存,重新安装了一个64位的Fedora16,把原来的32位的Fedora15格掉了。于是在重新安装Android SDK时遇到了非常好玩的事情,先是SDK的安装文件和ADT无法下载,我家用的移动的宽带,就是无法下载,跟朋友联系了发现移动和联通的宽带无法下载,中国电信是可以正常下载的,真是诡异啊!没有办法,到朋友那下了一个。回来安装时就一直停在Fetching状态,
原创
15551阅读
3评论
2点赞
发布博客于 9 年前

Understanding Android ContentProvider

1. 什么是ContentProvider也即内容提供者,是对所有数据访问的一层抽象,为数据访问提供了统一的接口。它有以下优点:a. 对数据的抽象,为所有的组件提供统一的访问数据的方式,从而让组件不必关心具体数据的呈现形式(文件or数据库)。数据,也可以只关心自身的管理,而不用去管使用者的访问问题。这样就达到了很好的封装。b. 接口更加方便,更加方便的让组件之间传送数据Conten
原创
2651阅读
0评论
3点赞
发布博客于 9 年前

Unit Testing in Android

1. Testing for ContentProvider在你开始为Provider写Case之前,应该仔细读一读SDK文档中关于Provider测试的说明。但是光读那些说明,你还是没办法写出正确的Case,因为你也知道,Android的文档是比较差劲的,有一些关键东西文档中没有说明,你也知道,这在Android当中并不少见。你写个Provider的Case,如下:public cl
原创
4900阅读
0评论
2点赞
发布博客于 9 年前

Android Mms专题之:PDU介绍

Android当中的Mms对MMS(Multimedia Messaging Service)的操作关乎MMS协议部分都是通过Frameworks中提供的API来完成的:com.google.android.mms这个包在SDK中是不开放的,只能供内部程序使用,它封装了所有MMS所需要的API。这个包就是Android中对MMS协议的实现,包括一些数据结构:GenericPdu,Multime
原创
13044阅读
2评论
11点赞
发布博客于 9 年前

Android Mms专题之:Compose详解

Mms中的ComposeMessageActivity(以下简称Composer)是整个Mms中最重要的一个组件,它负责编辑信息,发送信息,管理信息,接收信息,与外部应用接口。在Mms内部与Composer关联的类和组件特别多,几乎所有的类和组件都与Composer有关联,关于信息的所有操作流程都起始于Composer;在外部Composer也是公开的接口,能够处理Intent.ACTION_SE
原创
8369阅读
2评论
9点赞
发布博客于 9 年前

Android中的脑残设计

Trackball轨迹球这有点类似于PC上面的鼠标,可以用于导航,为此便有了Focus,但是这实际操作意义并不大,因为整个屏幕都是触控的,还用导航干什么,先把Focus用Trackball移动到某个控件再去点击这不是多此一举吗?而且这个Focus十分难以控制,给开发者添加了无尽的烦恼,所以轨迹球是脑残的设计,所以现在Android的设备已经进化的都去掉了轨迹球了。当初为何加入这个东西呢?我猜因
原创
5640阅读
6评论
4点赞
发布博客于 9 年前

时间管理三要点

这么多年到现在仍然一事无成的主要原因就是:想的太多,做的太少,或者叫做执行力太差。总结了下,想要做成点事必须要做到以下三点:行动do it now不要想太多,不要说太多,不要列太多的要做事项,少说多做,马上去做,立刻去做。写到待办事项上的就必须马上做,并且快速完成。拖拖拉拉是做事的大敌。专注focus人的精力有限,一天能完成的事情很少,一辈子能完成的事情更少,所以,要缩小要
原创
2509阅读
2评论
3点赞
发布博客于 9 年前

什么是真正的用户

近日由于电脑坏了,系统装不上,总是蓝屏,自已搞不定了就去了电脑城的售后。在路上的时候还被一个修电脑的人截住,非要帮我看看电脑,无奈让他看了,他说帮我装正版系统,100元,我转身就走了。(去电脑城这点最烦人,就是卖电脑和维修电脑的人总来骚扰,走路都走不安稳)。在售后时,等待售后检查的十几分钟内,有三个人来修电脑,其实硬件没有问题,只是想重新安装系统,50元一个,如果想装正版的100元。当然,这里的系
原创
2464阅读
0评论
2点赞
发布博客于 9 年前