如何使用SQLite
摘要:前些时候看到兴趣小组里有人问“Android上SQLite的最佳实践”是什么,好奇地搜了一下,确实没有一个好一点的指导文档,平时的使用也只是简单的拷贝code,并没有深入的研究过。以下是我看到的Kevin关于其使用的心得,原文的大体的意思是: Android例子涵盖了一些Sqlite的基本用法,但它们并没有深入地给出合理的使用方法,更重要的是,不合理的使用方法。大多数例子和文档只是涉及最基本的数据库查询,或者教你如何创建一个ContentProvider。从来不提及的地方像: · 什么地方创建和保存SQLiteOpenHelper实例? · 可以有多少个实例? ...
阅读全文
posted @
2011-12-30 11:03
xirihanlin
阅读(6192)
推荐(0)
Android上实现Push
摘要:这些天一直在琢磨如何在android device上实现一套Push功能,也google很多资料,看似无外乎以下三个方案(以下转载): 1)轮询:应用程序应当阶段性的与服务器进行连接并查询是否有新的消息到达,你必须自己实现与服务器之间的通信,例如消息排队等。而且你还要考虑轮询的频率,如果太慢可能导致某些消息的延迟,如果太快,则会大量消耗网络带宽和电池。 2)SMS:在Android平台上,你可以通过拦截SMS消息并且解析消息内容来了解服务器的意图。这是一个不错的想法,我就见过采用这个方案的应用程序。这个方案的好处是,可以实现完全的实时操作。但是问题是这个方案的成本相对比较高,你很难找到免费的短
阅读全文
posted @
2011-12-06 12:15
xirihanlin
阅读(11423)
推荐(0)
Android中的Handler, Looper, MessageQueue和Thread
摘要:前几天,和同事探讨了一下Android中的消息机制,探究了消息的发送和接收过程以及与线程之间的关系。虽然我们经常使用这些基础的东西,但对于其内部原理的了解,能使我们更加容易、合理地架构系统,并避免一些低级错误。
对于这部分的内容,将分成4小节来描述:
1.职责与关系
2.消息循环
3.线程与更新
4.几点小结
阅读全文
posted @
2011-04-11 17:52
xirihanlin
阅读(45872)
推荐(13)
浅析GestureDetector
摘要:分析GestureDetector的TouchEvent解析过程,重构自己的Detector。
阅读全文
posted @
2010-12-29 10:51
xirihanlin
阅读(4625)
推荐(3)
Menu资源
摘要:Menu资源定义了应用程序的菜单(选项菜单,上下文菜单或子菜单),可以通过MenuInflater创建。File Location: res/menu/filename.xml 文件名将作为资源ID使用。Compiled Resource Datatype: 指向Menu(或子类)资源的指针。Resouce Reference: R.menu.filename(Java) @[package:]m...
阅读全文
posted @
2010-06-25 15:56
xirihanlin
阅读(1991)
推荐(0)
Testing和Instrumentation
摘要:Android提供了一系列强大的测试工具,它针对Android的环境,扩展了业内标准的JUnit测试框架。尽管你可以使用JUnit测试Android工程,但Android工具允许你为应用程序的各个方面进行更为复杂的测试,包括单元层面及框架层面。Android测试环境的主要特征有:l 可以访问Android系统对象。l Instrumentation框架可以控制和测试应用程序。l Android系统...
阅读全文
posted @
2010-06-15 17:06
xirihanlin
阅读(12288)
推荐(1)
Drawable资源
摘要:Drawable资源是对图像的一个抽象,你可以通过getDrawable(int)得到并绘制到屏幕上。这里有几种不同类型的Drawable:Bitmap File 一个Bitmap图像文件(.png、.jpg或.gif)。BitmapDrawable。Nine-Patch File 一个带有伸缩区域的PNG文件,可以基于content伸缩图片(.9.png)。NinePatchDrawable。S...
阅读全文
posted @
2010-06-14 10:32
xirihanlin
阅读(15551)
推荐(7)
ColorStateList资源
摘要:ColorStateList对象可以在XML中定义,像color一样使用,它能根据它应用到的View对象的状态实时改变颜色。例如,Button可以存在多种状态(pressed、focused或other),如果使用ColorStateList,你就能为它的每个状态提供不同的颜色。你可以在XML文件中描述状态列表。每种颜色定义在一个<item>元素里,<item>放在单个&l...
阅读全文
posted @
2010-06-11 10:12
xirihanlin
阅读(9604)
推荐(2)
资源类型
摘要:这个章节的每篇文章都将从使用、格式和语法角度来描述某个特定类型的应用程序资源,而这些资源你都可以放置到资源文件夹中(res/)。接下来简要介绍每一种资源类型:注:R.id不是一种资源。在你的UI中,你会经常使用一个R.id的整数来处理View对象。尽管id也是R类的一个子类,但它不能看作是一种“资源”,因为它不会直接引用外部的应用程序资源。id只是一种简单的唯一标志,你可以...
阅读全文
posted @
2010-06-10 17:31
xirihanlin
阅读(1880)
推荐(0)
Task和Activity相关
摘要:这段时间在做一个项目,发现对Task和Activity掌握的还是不牢固。把相关知识整理在这里,方便查阅,有几个Flag没看明白啥意思,也没测试出来效果如何。。。android:allowTaskReparenting 用来标记Activity能否从启动的Task移动到有着affinity的Task(当这个Task进入到前台时)——“true”,表示能...
阅读全文
posted @
2010-06-03 15:36
xirihanlin
阅读(16965)
推荐(2)
应用程序版本
摘要:在程序升级/维护过程中,版本控制是一个很重要的内容。· 用户需要了解安装到设备上的应用程序的版本信息,以及了解哪些版本可以进行升级。· 其它应用程序——包括你发布的其它程序——需要向系统查询你的应用程序的版本,来确定相互之间的兼容性。· 你的应用程序发布的服务可能也需要查询版本来显示给用户。Android系统自身不检查应...
阅读全文
posted @
2010-05-04 08:57
xirihanlin
阅读(2215)
推荐(0)
应用程序签名
摘要:这篇文章将阐述在应用程序发布前有关应用程序签名的内容。概述Android系统要求,所有的程序经过数字签名后才能安装。Android系统使用这个证书来识别应用程序的作者,并且建立程序间的信任关系。证书不是用于用户控制哪些程序可以安装。证书不需要授权中心来签名:Android应用程序上使用自己签名的证书是完全允许且普遍的。理解Android应用程序签名有以下几个重要点:· 所有的应用程序都必...
阅读全文
posted @
2010-04-29 16:25
xirihanlin
阅读(10538)
推荐(2)
布局技巧:使用ViewStub
摘要:多亏了<include />标签,在Android里,很容易就能做到共享和重用UI组件。在Android开发中,很容易就能创建出复杂的UI结构,结果呢,用了很多的View,且其中的一些很少使用。针对这种情况,谢天谢地,Android还为我们提供了一个特别的构件——ViewStub,它可以使你充分享受<include />的好处而不会造成无用View的...
阅读全文
posted @
2010-04-28 21:25
xirihanlin
阅读(23367)
推荐(3)
布局技巧:创建高效布局
摘要:Android UI工具包提供了一些布局管理器,它们使用起来相当容易,而且,大多数的时候,你只需要使用它们最基本的特征来实现UI。执着于基本特征的使用对于创建UI来说,往往不是最高效的。一个常见的例子就是滥用LinearLayout,它将会导致View树中的View数量激增。View——更糟的是,布局管理器——添加到应用程序里都会带来一定的消耗:初始...
阅读全文
posted @
2010-04-26 13:50
xirihanlin
阅读(5732)
推荐(0)
布局技巧:创建可重用的UI组件
摘要:Android平台提供了大量的UI构件,你可以将这些小的视觉块(构件)搭建在一起,呈现给用户复杂且有用的画面。然而,应用程序有时需要一些高级的视觉组件。为了满足这一需求,并且能高效的实现,你可以把多个标准的构件结合起来成为一个单独的、可重用的组件。例如,你可以创建一个可重用的组件包含一个进度条和一个取消按钮,一个Panel包含两个按钮(确定和取消动作),一个Panel包含图标、标题和描述等等。简单...
阅读全文
posted @
2010-04-22 09:25
xirihanlin
阅读(2721)
推荐(0)
App“加固”
摘要:实现应用程序不会随着新版本的Android平台装载到用户设备上而造成挂机是很重要的。下面的列表列举了五种我们观察到的比较糟糕的实现方式。你可以把这些看作是Android开发的“反模式”(即避免技巧)。如果你的应用程序使用了下面描述的技巧,赶紧修补你的App吧。避免技巧,#1:使用内部API即便我们总是建议不要这么做,但还是有一些开发者选择使用那些不支持或者内部的API。例如...
阅读全文
posted @
2010-04-21 14:44
xirihanlin
阅读(2322)
推荐(0)
SQLite在字符串比较中的大小写问题[zz]
摘要:作者:heero大部分数据库在进行字符串比较的时候,对大小写是不敏感的。但是,最近使用SQLite的时候,却发现它的情况恰好相反。假设表User的结构和值如下:UserName1User1执行下面的SQL语句:SELECT * FROM [User] WHERE UserName = 'user1' 结果是没有找到任何记录。明显地,SQLite在进行字符串比较的时候,默认对大小写是敏感的。这会对应...
阅读全文
posted @
2010-04-20 14:53
xirihanlin
阅读(3413)
推荐(0)
Android中的线程模型
摘要:这篇文章将讨论Android应用程序中使用的线程模型,并讨论如何确保应用程序最佳的UI呈现(通过创建工作者线程来处理耗时的操作,而不是在主线程里处理)。这篇文章还将阐述与运行在主线程中的UI组件交互的API以及创建托管的工作者线程的API。UI线程当应用程序启动后,系统创建了一个叫做“main”的线程。主线程,也叫UI线程,非常重要,因为它负责分发事件给构件,包括绘制事件。...
阅读全文
posted @
2010-04-13 15:44
xirihanlin
阅读(4274)
推荐(0)
简单优化:Zipalign
摘要:Android SDK中包含一个“zipalign”的工具,它能够对打包的应用程序进行优化。在你的应用程序上运行zipalign,使得在运行时Android与应用程序间的交互更加有效率。因此,这种方式能够让应用程序和整个系统运行得更快。我们强烈推荐在新的和已经发布的程序上使用zipalign工具来得到优化后的版本——即使你的程序是在老版本的Andro...
阅读全文
posted @
2010-04-12 13:08
xirihanlin
阅读(65981)
推荐(2)
我能使用这个Intent吗?
摘要:Android提供了一个非常强大且易于使用的消息类型:Intent。你可以使用Intent来将应用程序变成一个高级的库,而且可以使代码模块化并可重用。例如,Android Home画面和AnyCut应用程序,使用Intent来创建快捷方式。能够使用这么低耦合的API固然很好,但是,无法保障你发出的Intent能够被其它应用程序接收。这种情况一般在第三方程序中发生,像Panoramio和它的RADA...
阅读全文
posted @
2010-04-12 13:05
xirihanlin
阅读(1659)
推荐(0)