- 博客(79)
- 资源 (27)
- 收藏
- 关注
【翻译】高效的double-checked线程锁
代码的性能是最重要的。然而,在当今复杂的多线程移动应用世界里,我们常常会为保证内存数据的一致性而牺牲一些性能。线程竞争条件的设计和调试是一件非常耗时,且容易令人沮丧的工作,所以线程被锁定太长时间的情况并不少见。幸运的是,现在有一些简单的模式可以使锁定变得更有效率,从而避免对性能产生不必要的影响。 首先,让我们先预览一下只有简单 setter 代码的基类:public...
2014-05-07 10:44:17
229
【翻译】 Android上实现文字围绕图片的布局
在这边文章中,我将会介绍如何去实现一个在Android系统中不常见的布局:文字围绕图片布局。 这个布局并不属于Android模式,但在处理相同的情景下,它是一样的实用。 在你正式使用它到实践项目前,你需对其进行一定的修改,毕竟它只是一个例子代码 以下是例子的布局: <ScrollView andro...
2014-04-09 16:31:20
390
【翻译】Android多线程下安全访问数据库
为了记录如何线程安全地访问你的Android数据库实例,我写下了这篇小小札记。文章中引用的项目代码请点击这里 假设你已编写了自己的 SQLiteOpenHelper。public class DatabaseHelper extends SQLiteOpenHelper { ... } 现在你想在不同的线程中对数据库进行写数据操作:// T...
2014-04-08 11:21:09
347
Android Robotium小结
Robotium 是一款基于Android instrumentation framework 的自动化测试工具库,功能十分强悍,而且上手简单,只要求有Junit基础即可。 先关注instrumentation 提供的三个基类: 1. SingleLaunchActivityTestCase 单activity测试实例,只调用setup和tearDown方法 2. Activi...
2014-03-17 15:41:56
157
Monkeyrunner小结
Monkeyrunner----Android tools中的测试工具 ,主要通过脚本,实现模拟用户对appUI界面的操作,完成对app的黑盒测试。 利弊:1、可以完成一定复杂程度的测试用例,避免重复的人工工作量;2、结合heap、strict mode等工具,可以实现压力测试,性能优化等任务;3、某些API对机型兼容不好,例如4.0以下的机型,对viewnode serv...
2014-03-15 23:49:20
148
(翻译)Java常用库
典型的Java项目总会引用各种第三方库。本文为各种不同的应用总结了最流行、并被广泛使用的Java库。其中一些还提供了一个简单的例子,如果它上可以找到 ProgramCreek 的。最被广泛使用的库肯定非Java SDK莫属啦。因此,这次名单的焦点是介绍当前流行的第三方开发库。1、核心库Apache Commons Lang – 这个库对 SDK中 java.lang 的 API补充...
2013-11-15 11:32:06
238
Android开发陷阱:利用PendingIntent传递唯一的Intent
PendingIntent 是对真实Intent的一种封装载体,可以用来在出发时,根据Intent 唤起目标组件,如 Activity,Service,BroadcastReceiver 等。 例如,一般的推广行为:接收后台推送消息,并展示在通知栏上,当用户点击消息通知后,唤起指定的目标:Intent intent = new Intent(action);Pendin...
2013-11-07 11:36:03
741
GridView的特殊派生应用
一、ScrollView + GridView 在ScrollView中放置GridView,无论GridView的高度是设置 wrap_content,还是 match_parent,最终渲染时GridView都会发生形变,原因是 ScrollView 不能正确算出 GridView 的实际显示高度。 解决方法有两个: 设定GridView 高度的dp值,同时也可...
2013-11-06 17:07:43
128
原创 svn执行update,却被告知database is locked!
执行 svn update,却抛出个错误警报:svn: E200033: database is locked, executing statement 'RELEASE s0' 之后无论是cleanup,还是release locker都没反应! 别急,试试以下方案:$ cd /your project path/.svn$ mv wc.db wc.db.ol...
2013-11-06 15:43:50
1007
原创 java反射机制调用有参构造函数生成类
在使用Java反射时,总是只记着: Class.forName(className).newInstance() 那对构造函数带参数的Class又如何反射呢? Class cls = Class.forName(className); Class[] paramTypes ...
2013-11-05 15:57:17
452
Android的ps命令介绍和技巧
在Linux下,ps是非常普通的命令:ps -aux 查看所有正在运行的进程ps | grep xxx 显示过滤指定名称的进程可是以上的命令在Android上,都不起作用! What?!!!Android不是基于Linux系统的吗?对,准确来说,Android是Google基于Linux的内核改造出来的。那也意味着,Android是一个Linux的修改版,这样子也解析了同样的命令...
2013-07-05 18:37:30
599
在Android上实现Java和Js交互
其实webview加载资源的速度并不慢,但是如果资源多了,当然就很慢。图片、 css 、 js 、 html 这些资源每个大概需要 10-200ms ,一般都是 30ms 就 ok 了。不过webview是必须等到全部资源都完成加载,才会进行渲染的,所以加载的速度很重要!从Google上我们了解到,webview 加载页面的顺序是:先加载 html ,然后从里面解析出 css 、 js 文...
2013-07-05 18:34:26
187
TextView的日常使用技巧
Textview在日常开发工作中使用非常频繁,在这里简单总结一下其比较重要的用法。目标是设置textview的中一段文字的显示属性,例如指定文字要下划线显示(@XXX、#XXX#),文字替换成图片,文字加重、变色、变大等。实现的基本思路都是将指定的文字找出来,然后用实现Spananble接口的子类覆盖,即可。 Spananble只是一个接口,它的继承关系是:Spananbl...
2013-07-05 18:29:15
159
Android NDK开发之Jni调用Java对象
本地代码中使用Java对象通过使用合适的JNI函数,你可以创建Java对象,get、set 静态(static)和 实例(instance)的域,调用静态(static)和实例(instance)函数。JNI通过ID识别域和方法,一个域或方法的ID是任何处理域和方法的函数的必须参数。 下表列出了用以得到静态(static)和实例(instance)的域与方法的JNI函数。每个函数接受(作为...
2013-03-16 00:11:31
231
Android NDK开发之数组类型的操作
Jni 可以通过JNIEnv提供的方法,对传过来的Java数组进行相应的操作。它提供了两种函数:一种是操作Java的简单型数组的,另一种是操作对象类型数组的。 操作Java的简单型数组因为速度的原因,简单类型的Java数组,会作为指向本地类型的指针暴露给本地代码调用。因此,它们能作为常规的数组存取。这个指针是指向实际的Java数组或者Java数组的拷贝的指针。另外,数组的布置保证匹...
2013-03-16 00:05:38
189
Android NDK开发之Jni的数据类型
在前面的一篇博客《Android NDK开发简介》,我简单地说明了Android NDK开发的流程,以及其重要的一环:JNI层得开发。今天我再详细说明一下自己的学习经验。JNI是Java代码和C/C++代码通信的桥梁,其角色在某种意义上就是一个翻译员,从设计模式来看叫适配器。两者的沟通,首要的一定要对嘴型,对channel,沟通才能到位。计算机程序的基本组成,从狭义来讲,就是数据结构...
2013-03-16 00:03:38
229
Android NDK开发简介
最近由于项目的需要,使用到了Android的NDK技术,对项目核心算法跨平台的移植。简答而言,就是使用C对原来的算法进行了改进,并集成到原来的app项目里。 从前的项目一直没有使用NDK进行开发的机会,因而一直仰慕那些技术大牛们关于NDK以及C/C++开发而写的文章,觉得很深奥,因而一直蠢蠢欲动。 其实NDK的开发并不复杂,就入门而言甚至可以说是easy job...
2013-03-07 15:12:59
173
MapReduce初探之一~~基于Mongodb实现标签统计
MapReduce 是一种编程模型,是 Google 提出的一种软件架构,主要应用于分布式系统上。Google对其原始的定义是“ MapReduce is a framework for computing certain kinds of distributable problems using a large number of computers (nodes), collectivel...
2013-03-06 09:59:26
249
原创 Android的NDK开发~Hellow world!
1、到Google官网下载adt-bundle----开发Android App的工具打包下载,下载后解压即可,免去开发环境的配置。 然后下载NDK,建议下载最新版本的,(ps:之前下载过r8a的,有bug,导致编译很慢,r8b就没有),配置ADT中的NDK Path。 ~~这样子就完成了NDK开发的全部准备了。 2、新建Android项目,step by st...
2013-02-05 13:52:07
152
原创 关于SD卡管理的注意事项
问题:本人一直有使用金蝶公司的随手记APP作为个人的理财工具,最新版提供多种渠道对数据进行备份和导出,这种功能十分讨好我这种用户,可是最近一次刷机的数据恢复,使我遇上了大麻烦,无论是从网盘下载的,还是本地本分的,均不能恢复!幸好,随手记作为一款成熟的APP,日志系统必然是有的,可是却没有错误反馈功能。作为开发者,阅览log后,发现是由于一文件不能正常读取而导致数据不能恢复!具体的日志...
2013-01-18 11:24:05
255
原创 基于NodeJs开发的独立博客系统~~上线啦
不知不觉,在ITEye上“驻扎”已经三年多了。由于个人比较懒,三年间发表的文章加起来只有40多篇。本人愚钝,自知自己的写作水平有限,三年来未现佳作,只是本人一直坚信:分享才是互联网的本质。因而一直分享自己在工作中,技术上的一些愚见,在各位看官面前献丑了。 最近闲来无事,热衷新技术的毛病发作,开始钻研NodeJs。刚好又赶上oschina的OSC应用开发大赛,本...
2013-01-18 11:22:27
308
原创 对比MySQL与SQL SERVER2005的触发器写法
最近给从前的项目做了数据库的移植,发现不同公司的产品,还真是差别甚大啊。 下面是原来用在MS SQL2005上的一个触发器: CREATE TRIGGER [TG_Update_Current] ON [dbo].[CurrentLocation] FOR UPDATEASBEGIN INSERT INTO dbo.HistoryLocation...
2013-01-06 17:34:46
208
Json解析之Gson库
Json(JavaScript Object Notation)是一种轻量级的数据交换格式,类似XML,但比XML更小更快更容易解析。当前各种流行的web应用框架都对Json提供良好的支持,各种流行开发语言也支持Json解析。 Java中解析Json的方式也很多,根据官方的JSONObject库,自己设计的一个抽象工具类: import java.io.Serializable;...
2012-09-24 11:46:06
171
搞定个性化输入提示--自定义AutoCompleteTextView
在设计app的输入界面时,假如假如智能提示,给用户带来的不只是方便,有时候还会是惊喜。通过实践研究,发现要实现android的个性化智能提示,实在非难事。 在Android中提供了两种智能输入框控件分是:MultiAutoCompleteTextView 和 AutoCompleteTextView 。 MultiAutoCompleteTextView 继承自AutoCompl...
2012-09-04 14:44:42
189
原创 解决Android加载大图片内存溢出的问题(OutofMemoryException)
首先解析一下基本的知识:位图模式,bitmap颜色位数是1位灰度模式,bitmap颜色位数是8位,和256色一样RGB模式,bitmap颜色位数是24位 在RGB模式下,一个像素对应的是红、绿、蓝三个字节CMYK模式,bitmap颜色位数是32位 在CMYK模式下,一个像素对应的是青、品、黄、黑四个字节图像文件的字节数(Byte) = 图像分辨率*颜色深度/8(bit
2012-08-16 09:48:40
1607
原创 关于系统软键盘弹出隐藏监听的讨论
最近项目有一个比较苦B的需求,需要在用户输入内容之前,弹出推赞窗口,以让用户可以从中选择一些系统推荐的内容。这个需求通过拦截焦点,可以搞掂软键盘和推荐弹窗的冲突。但是更苦B的是,输入控件设计在屏幕的最下面(Bottom),这个导致了一个十分怪异的现象: 默认下输入控件是没有焦点的,当用户点击时,系统软键盘会自动优先弹出。因为有推荐功能,我们要先让用户看到推荐弹出窗。那就要把原来弹出的软件人...
2012-06-18 18:22:51
141
原创 ubuntu12.04配置Java和NDK环境
最近由于项目需要,要用到NDK去编译实现一些功能。刚开始,尝试在windows7下进行NDK开发环境的开发,可是繁琐的不得了,每次编译还要配置参数,或修改mk文件,而且在64位的系统下还会有bug。实在是忍受不了,就有了在linux下进行编译的想法,因此做了这样一次记录: 在ubuntu下配置NDK非常简单: 从google上下载最新版的NDK包,http://developer...
2012-06-08 10:25:55
131
原创 WebView学习小记
最近有个项目需要用到第三方身份验证,进行用户登录,考虑到同时兼容多个第三方平台(如网易,新浪,腾讯等)的验证,而且要达到最大可能的跨平台(同时支持网页端和手机端),最终确定采取使用网页方式进行第三方的身份验证,以便于在线维护升级。 既然是在线系统,手机端就是访问该网点就是了。Android上提供了强大的WebView控件,利用这一工具,我们可以拦截各种由后台发起的页面跳转,也可以响应页面的...
2012-06-06 19:41:17
92
android异常:Can not perform this action after onSaveInstanc
本人某个android项目开发阶段一直运行良好,直到上线前夕,在某款跑着android 4.03系统的手机运行却报出一下异常,导致force close:java.lang.IllegalStateException: Can not perform this action after onSaveInstance!首先得了解一下我那项目的一些基本情况,UI结构是TabActivity包含...
2012-05-24 10:47:53
254
原创 Android TabHost布局
Android中使用TabHost 可以在一个屏幕间进行不同版面的切换:在Android中要实现Tab切换页面的效果,大致有两种方法:一是利用layout下的xml配置来实现tab的布局,二是动态加载tabHost进行布局。 1、利用xml文件配置,引用xml的activity不用继承于TabActivity,通过findViewById方法获取TabHost,具体的xml见下
2012-03-26 09:14:30
1181
原创 基于简单工厂思想的SharePreference组件设计
在app的开发中,让用户设置自己的偏好,能给用户很友好的体验。在android系统中,google很贴心的提供了SharePreference组件,方便开发者存储app的数据。SharePreference提供的API,对简单的基本类型数据,以键值对(key-value)的方式进行的存储,使用极其简单。具体使用教程可以留意google的官方文档,这篇blog主要是介绍使用简单工厂模式开发基于Sha...
2012-03-23 11:10:23
149
关于PopupWindow的讨论
说到android的PopupWindow弹出窗,与对话框Dialog的区别就是,PopupWindow可以灵活定制弹出窗的界面以及弹出的位置! 对,控制弹出窗的弹出位置,这个是我在这里主要想讨论,分享的地方。 弹出前,先创建一个popupWindow的实例: private PopupWindow createPopupWindow(){ ...
2012-02-25 17:16:42
133
也简单说说Button背景的Selector配置
android的Button控件在应用里是十分常见的,功能也十分强大!但是想把它做得漂亮一点,交互效果好一点,就需要一点技巧----使用selector,进行便利的UX效果配置,selector使用的方法也很简单,网上一大堆教程,这里就不多说了。 这篇文章,主要是想分享一下自己遇到的问题:Button的背景使用selector配置问题。 以下是一段能正常使用的selector xm...
2012-02-25 15:13:18
306
探秘ListView的ConvertView以及ViewHolder原理
最近在使用android的组件ExpandableListView,实现需求时,遇到不少奇怪的问题。我的需求就是在ExpandableListView的父一级的view上添加两个按钮,实现添加子一级view的添加一级删除自己的功能。 自定义的layout如下: <?xml version="1.0" encoding="utf-8"?><RelativeL...
2011-11-22 00:19:06
200
原创 正则表达式学习笔记
正则表达式是强大而灵活的文本处理工具,它们可以让我们以编程的方式指定那些可以在输入字符串中发现的复杂的文本模式。它提供了一种紧凑的、动态的语言,能够以完全通用的方式来解决各种字符串的处理(例如,匹配、选择、编辑及验证)问题。1、创建正则表达式首先从用正则表达式可能存在的构造集中选取一个有用的子集,以此开始学习正则表达式。用于创建正则表达式的构造列表可以在java.util.regex包Pa...
2011-11-18 17:54:27
125
原创 强悍的正则表达式
在编写程序时,时常会遇到要替换掉字符串中的某部分,或者找出某部分,又或者删除某部分,总之就是字符串匹配的问题。 Java的String类也提供了强大的字符串处理函数,例如split,subString,index,replace等等,在简单的场合,也许他们已经够用了,可是在一些重复性大,批量操作的情况下,他们就得配合一个工具,来扩充他们的能力了,那是一个强大而且通用的工具...
2011-11-18 17:51:05
116
获得两点间的GPS距离
现在LBS越来越流行,计算地理位置的距离的需求十分普及,以下我就分享一下自己平时用来获得两点间的GPS距离的实用方法:在android中可采用如下代码获取距离:Java代码public double getDistance(double lat1, double lon1, double lat2, double lon2) { f...
2011-07-07 09:14:11
152
原创 自动更新图片的任务类
即时的网上抓图,尽管可以保证图片是最新的,但是遇上网络环境差的地方,load图的过程就会令人抓狂!假设图片的更新是有周期的,隔一段时间,图片才会换掉,那么为本地的程序弄一个本地的缓存,来提升加载图片的效率,这就变得十分有必要! 之前由于客户需求,搞了一个自动下载并自动更新本地图片的类,现在拿出来与大家分享: 具体的思路是:先初始化网络图片的URL,以及本地缓存的URL,本地...
2011-05-05 09:12:06
126
Notification探险
多任务机制下,程序跑在后台,用户使用服务,形成了一个良好的使用结构。程序运行的状态或结果,在不干扰用户当前使用的状态下,以通知的方式通知用户,能大大提升地用户的使用感。 在android下,与通知功能相关的组件大致有以下三大部分: android.app.PendingIntent;android.app.NotificationManager; android.app.N...
2011-03-31 10:43:04
97
原创 Java与XML原来可以这么简单--基于SAX标准
DOM处理大型文件时其性能下降的非常厉害。这个问题是由DOM的树结构所造成的:这种结构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存。更甚的是,Java VM中最耗资源的一个动作就是new一个对象,要存储DOM中的节点相对应得也就要new很多个对象,对性能的影响显而易见了。 在SAX解析器装载XML文件时,它遍历文件文档并在其主机应用程序中产生事件(经由回调函数、指派函...
2011-03-25 16:49:14
113
反编译Apk2Java
2011-04-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人