1月 122017
 

平时工作经常需要编译不同的android测试包,对这种重复劳动着实无感,趁着这几天工作不是很忙,尝试部署了jenkins来自动编译,下面记录一下过程(以下主要讨论在windows环境下的操作)。

第一步

使用ant编译android项目。如果是使用eclipse开发android,应该对ADT打包速度颇为无语,使用ant的速度要快很多。第一步要做的就是保证ant能够正常build项目,这样后面jenkins就可以启动一个ant编译任务进行android打包。ant编译android项目需要做如下工作: Continue reading »

1月 112017
 

今天用到了Java中Integer.highestOneBit方法,之前还真没注意Integer中还有位运算相关的方法,这里简单列举一下,方便后续查:
a. highestOneBit(i)
如果一个数是0, 则返回0
如果是负数, 则返回 -2147483648 1000,0000,0000,0000,0000,0000,0000,0000(二进制表示的数)
如果是正数, 返回的则是跟它最靠近的比它小的2的N次方
正数、0好解释,至于负数,由于计算机中的数字都是采用补码表示,即反码+1,并且最高位是一个1、表示负数,因此这个符号位作为最终结果返回。 Continue reading »

1月 052017
 

开发时遇到过的UTF8文件有BOM头、导致文件不能正常解析这问题,BOM是什么这个问题请参考如下地址:
https://en.wikipedia.org/wiki/Byte_order_mark
UTF8 与 UTF8 +BOM 区别
其实就是在文件头部的3个字节:EF BB BF,而且是不可见的,可以用于标示字节编码顺序(Big-Endian/Little- Endian),UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式。Windows就是使用BOM来标记文本文件的编码方式的。此处整理一下移除BOM头的方法: Continue reading »

12月 262016
 

最近开始看jdk源代码,先分享一个挺好的博客:http://blog.csdn.net/chenssy  chenssy 有关JDK源码的博文写的很细,我就参考他的博文写写其他的内容,已经被chenssy写过的内容我就不再重复啦,估计也没他写的细。另外,如果网上已有相关分析,我可能直接给出链接、做做补充,毕竟本系列属于读书笔记性质,留下个记录免得自己忘记,并不打算写的特别全或是全部原创。下面就开始【源码分析】系列的第一篇:ConcurrentSkipListMap
声明:本博客内容一般采集自互联网,若引用了其他文章或是博客的内容,我会尽量注明出处。如果有转载、未注明出处,或是有侵权的情况,请及时与我沟通(evasnowind@sina.com),我会及时删除。转载请注明本文出处,谢谢。
在java中,
如果我们需要快速存取键值对,可以用HashMap; Continue reading »

12月 222016
 

打算整理一下最近两年做android所学到的东西,代码、文章配套整理一下,但是发现自己其实研究的还很肤浅,写出东西还是没人家写的明白,so,索性直接转发吧,主要是为了日后查起来方便,代码打出一份方便日后搬砖。
下面文章转自:Android中SQLite应用详解 相关代码参见:https://github.com/evasnowind/PrayerUtility/
————华丽的分割线————
上次我向大家介绍了SQLite的基本信息和使用过程,相信朋友们对SQLite已经有所了解了,那今天呢,我就和大家分享一下在Android中如何使用SQLite。 Continue reading »

12月 202016
 

工作中遇到“判断android手机的rom是哪一个版本”这样的问题,搜到如下解决方案,具体出自哪里不确定(网上转载太多,也没标注出处……),我是在这里看到的:http://mojijs.com/2015/10/211671/index.html 代码复制下来即可用,我已经验证过,O(∩_∩)O~
Continue reading »

8月 252016
 

要实现可拖动的九宫格,网上搜了下,搜到比较靠谱的是这个版本,原理、实现都写的很清楚,但有个问题,用到GridView时,写adapter时一般都会使用ViewHolder的方式,即adapter使用BaseAdapter,adapter中保存数据,而调用getView方法时,若是第一次调用则将可复用的数据保存到一个ViewHolder类中,后续就不用再重新创建View;或者,adapter中每次根据数据创建view。
由于公司所用的客户端框架限制,我在实现可拖动的九宫格时,在getView方法中,拿到的数据就是一个个已经创建好的View对象,但按照上面提到的xiaanming的拖动实现方式,我将这些已有的View对象在getView中返回、加入到GridView后,发现显示没问题,但是拖动之后,View的显示顺序会乱掉,而且会出现第一次点击某个View时对应回调方法没有响应,但第二次点击时则会响应第一次点击、第二次点击两个回调方法。
为解决这问题,在github上发现如下可拖动九宫格的另一种实现,尝试重写adapter类后解决了该问题,发现这个跟stableid有关。我一开始写的adapter大概样子如下; Continue reading »

8月 242016
 

app上线前遇到一个很诡异的问题,同一款型号的手机,一台手机没问题,另一台手机则在显示首页后假死、然后直接闪退。经过排查,确定是自定义GridView惹的祸,异常信息如下:

 java.lang.IllegalArgumentException: parameter must be a descendant of this view
 at android.view.ViewGroup.offsetRectBetweenParentAndChild(ViewGroup.java:5353)
 at android.view.ViewGroup.offsetDescendantRectToMyCoords(ViewGroup.java:5282)
 at android.view.ViewGroup$ViewLocationHolder.init(ViewGroup.java:7755)
 at android.view.ViewGroup$ViewLocationHolder.obtain(ViewGroup.java:7689)
 at android.view.ViewGroup$ChildListForAccessibility.init(ViewGroup.java:7624)
 at android.view.ViewGroup$ChildListForAccessibility.obtain(ViewGroup.java:7592)
 at android.view.ViewGroup.addChildrenForAccessibility(ViewGroup.java:1927)
 at android.view.ViewGroup.onInitializeAccessibilityNodeInfoInternal(ViewGroup.java:2982)
 at android.widget.AdapterView.onInitializeAccessibilityNodeInfoInternal(AdapterView.java:983)
 at android.widget.AbsListView.onInitializeAccessibilityNodeInfoInternal(AbsListView.java:1509)
 at android.widget.GridView.onInitializeAccessibilityNodeInfoInternal(GridView.java:2361)
 at android.view.View.onInitializeAccessibilityNodeInfo(View.java:6151)
 at android.view.View.createAccessibilityNodeInfoInternal(View.java:6110)
 at android.view.View.createAccessibilityNodeInfo(View.java:6095)
 at android.view.accessibility.AccessibilityRecord.setSource(AccessibilityRecord.java:145)
 at android.view.accessibility.AccessibilityRecord.setSource(AccessibilityRecord.java:119)
 at android.view.View.onInitializeAccessibilityEventInternal(View.java:6047)
 at android.widget.AdapterView.onInitializeAccessibilityEventInternal(AdapterView.java:994)
 at android.view.View.onInitializeAccessibilityEvent(View.java:6035)
 at android.view.View.sendAccessibilityEventUncheckedInternal(View.java:5896)
 at android.view.View.sendAccessibilityEventUnchecked(View.java:5881)
 at android.view.View$SendViewStateChangedAccessibilityEvent.run(View.java:22468)
 at android.os.Handler.handleCallback(Handler.java:743)
 at android.os.Handler.dispatchMessage(Handler.java:95)
 at android.os.Looper.loop(Looper.java:150)
 at android.app.ActivityThread.main(ActivityThread.java:5546)
 at java.lang.reflect.Method.invoke(Native Method)
 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:794)
 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:684)

Continue reading »

5月 252016
 

首先说明下,本帖主要是为了给出思路,不会给出特别细的教学代码,详细的API使用网上搜就好了。
先给出一个对于webview的帖子:有关webview中js与java互调的帖子
javascript调用java
也就是说通过webview所访问的web站点,希望通过js调用android本身的接口实现某些功能。这种情况下可以用webview控件的addJavascriptInterface接口注册一个js接口,然后web站点中调用这个接口即可,可以参考这个例子:传送门 Continue reading »