- 博客(27)
- 资源 (24)
- 问答 (2)
- 收藏
- 关注
原创 Activity的启动流程
Activity的启动流程作为应用程序的主线程,ActivityThread负责处理各种核心事件。比如AMS通知应用进程去启动一个Activity这个任务,最终将转化为ActivityThread所管理的LAUNCH_ACTIVITY消息,然后调用handleLaunchActivity,这是整个ViewTree建立流程的起点。启动Activity的时候,最终会执行到ActivityThread类中
2016-03-02 11:09:27 356
翻译 android管理bitmap的内存
除了缓存bitmap之外,你还能做其他一些事情来优化GC和bitmap的复用。推荐的策略取决于Android的系统版本。附件中的例子会向你展示如何设计app以便在不同的Android版本中提高app的内存性能。 在不同的Android版本中,bitmap的内存管理有所不同。 在Android2.2(api level8)和之前的版本中,当GC触发的时候,App的
2015-02-03 12:30:49 686
原创 trying to use a recycled bitmap解决之道
在做Android应用涉及到大量图片展示的时候,如果没有对内存做妥善处理,经常会报OOM的异常。其实也好理解,图片占用了太多内存。这个时候除了需要对图片进行压缩,另外还需要及时通过调用bitmap.recycle()释放图片占用的内存。但是盲目的调用这个方法,很有可能会出现trying to use a recycled bitmap的崩溃。尤其是你不确定回收的图片后续会不会被继续调用。
2015-01-15 14:15:54 1719
原创 android事件处理流程
最近在做一个效果,viewgroup要响应滑动事件,它的一个子view还要响应点击事件。为了实现该效果,不得不重新研究Android 事件处理流程。 理解下面三个方法的左右对实现该效果有很大的帮助,public boolean dispatchTouchEvent(MotionEvent event)public boolean onTouchEvent(MotionEve
2015-01-15 10:33:55 397
原创 ObjectAnimator中View.Y和View.TRANSLATION_Y的区别
ObjectAnimator animator=ObjectAnimator.ofFloat(textView,View.Y,0,100); ObjectAnimator animator=ObjectAnimator.ofFloat(textView,View.TRANSLATION_Y,0,100); 这两者的区别在于,Y是绝对位置,TRANSLATION_Y是相对位置,跟它定义
2015-01-15 10:33:49 745
原创 AsyncTask源码分析
在android开发中,如果有比较耗时的操作,为了避免ANR,我们一般采用多线程的方式来运行耗时操作。而android推荐我们使用AsyncTask来启动新的线程,根据API文档的介绍,我们知道AsyncTask在耗时任务执行完毕后能直接更新UI线程,所以使用这个类可以满足我们大多数的多线程开发需求。但是这个工具类的底层实现是怎样的?下面我们通过阅读源码来研究一下。通过阅读源码,得知AsyncTa
2015-01-15 10:33:43 428
原创 SparseArrays源码分析
在android开发中,如果要使用到以Integer为key的map的时候,要优先使用SparseArrays。API文档上指明使用SparseArrays可以更高效的使用内存。通过阅读源码,可以看出在SparseArrays的实现中,避免了自动装箱机制,以及舍弃了entry来保存key和value的匹配,而是分别使用了两个数组来保存key和value。但是有利就有弊,这种实现方式就不得不放弃Ha
2015-01-15 10:33:38 358
原创 struts2 文档的一处错误?
最近用到struts2的文件上传功能。于是查看struts2的文档,上面对于拦截器的配置是这样的: image/jpeg,image/gif good_result.jsp 经我测试,这样配置的话struts2总是报错。提示说是空指针异常。 但是如果这样配置的话,就可以正常运行
2015-01-15 10:33:32 363
原创 利用htmlparser解析网页的标题、keywords和Description
网页中的标题、keywords和Description这三项对于建立网页索引是非常重要的。以下是用htmlparser对网页进行解析来得到这三个值。try { NodeFilter title_filter = new TagNameFilter("title"); NodeFilter meta_filter = new TagNameFilter("meta");
2015-01-15 10:33:26 639
原创 基于struts2的一个验证码的实现
相信大家一定都知道验证码的重要性,所以对验证码不做过多介绍。以下是用struts2实现的一个验证码生成程序。 public class CheckCode extends ActionSupport { private static final long serialVersionUID = 1L; private static int WIDTH=60; private
2015-01-15 10:33:20 364
原创 服务器端防止重复提交的一个实现
由于web服务器要同时处理大量的http请求,所以用户的某个提交会得不到及时的相应。这样用户会有意无意的重复点击提交,如果没有很好的措施来防止这种情况。会对系统的安全性带来隐患。常用的防止重复提交的方法有两种:1.通过javascript代码在客户端浏览器进行处理。2.在服务器端进行处理。 其中第二种的安全性更高。 以下是一个在服务器端进行的防止用户重复提交的一个实
2015-01-15 10:33:14 704
原创 ArrayBlockingQueue源码阅读心得
最近在看林昊写的那本《分布式java应用》,阿里巴巴(包括淘宝、支付宝)是我最想去的地方,所以看淘宝网架构师写的书还是很有必要的。 该书第4章讲到了java.util.concurrent下面的一些常用类,由于书上写的太过笼统,所以找出一些类的源码进行阅读,现把心得写一下,供以后自己参考。 废话不说,先看ArrayBlockingQueue的源码。 Arr
2015-01-15 10:33:02 356
原创 Effective java,java程序员的武林秘籍
很早之前就看到有人推荐《Effective java》这本书,本人一直不屑(原谅我的粗陋寡闻),它再好能好过《java编程思想》?!今天无意中翻了两页,马上就欲罢不能。好书,确实是好书,一种相见恨晚的感觉。 可以说《java编程思想》更偏向于武侠世界里面的剑招,读了以后可以学会很多微妙的剑法,当然也能学到内功心法。但是《Effective java》就更像是少林寺的《易筋经》,读后
2015-01-15 10:32:56 507
原创 设置viewPager的高度为自适应
最近项目中需要Viewpager的高度能够自适应的动态改变,如果直接设置viewpager的高度为android:layout_height="wrap_content",并不起作用,viewpager会铺满父布局,通过阅读viewpager的源码,发现创建一个viewpager的子类并重写onMeasure可实现这个需求,代码如下: /** * Created by zhaoxi
2015-01-13 15:53:11 5514 1
原创 android事件处理流程
最近在做一个效果,viewgroup要响应滑动事件,它的一个子view还要响应点击事件。为了实现该效果,不得不重新研究Android 事件处理流程。 理解下面三个方法的左右对实现该效果有很大的帮助,public boolean dispatchTouchEvent(MotionEvent event)public boolean onTouchEvent(...
2015-01-11 13:59:38 122
原创 ObjectAnimator中View.Y和View.TRANSLATION_Y的区别
ObjectAnimator animator=ObjectAnimator.ofFloat(textView,View.Y,0,100); ObjectAnimator animator=ObjectAnimator.ofFloat(textView,View.TRANSLATION_Y,0,100); 这两者的区别在于,Y是绝对位置,TRANSLATION_Y是相对位置,跟它...
2014-08-01 14:52:41 723
原创 AsyncTask源码分析
在android开发中,如果有比较耗时的操作,为了避免ANR,我们一般采用多线程的方式来运行耗时操作。而android推荐我们使用AsyncTask来启动新的线程,根据API文档的介绍,我们知道AsyncTask在耗时任务执行完毕后能直接更新UI线程,所以使用这个类可以满足我们大多数的多线程开发需求。但是这个工具类的底层实现是怎样的?下面我们通过阅读源码来研究一下。通过阅读源码,得...
2013-11-25 20:42:02 95
SparseArrays源码分析
在android开发中,如果要使用到以Integer为key的map的时候,要优先使用SparseArrays。API文档上指明使用SparseArrays可以更高效的使用内存。通过阅读源码,可以看出在SparseArrays的实现中,避免了自动装箱机制,以及舍弃了entry来保存key和value的匹配,而是分别使用了两个数组来保存key和value。但是有利就有弊,这种实现方式就不得...
2013-11-23 16:05:02 113
原创 struts2 文档的一处错误?
最近用到struts2的文件上传功能。于是查看struts2的文档,上面对于拦截器的配置是这样的:<action name="doUpload" class="com.example.UploadAction"> <interceptor-ref name="basicStack"/> <interceptor-ref name="file.
2011-05-20 16:57:46 93
利用htmlparser解析网页的标题、keywords和Description
网页中的标题、keywords和Description这三项对于建立网页索引是非常重要的。以下是用htmlparser对网页进行解析来得到这三个值。try { NodeFilter title_filter = new TagNameFilter("title"); NodeFilter meta_filter = new TagNameFilter("meta"); ...
2011-05-16 14:48:42 158
原创 基于struts2的一个验证码的实现
相信大家一定都知道验证码的重要性,所以对验证码不做过多介绍。以下是用struts2实现的一个验证码生成程序。 public class CheckCode extends ActionSupport { private static final long serialVersionUID = 1L; private static int WIDTH=60; private ...
2011-05-10 20:53:21 111
原创 服务器端防止重复提交的一个实现
由于web服务器要同时处理大量的http请求,所以用户的某个提交会得不到及时的相应。这样用户会有意无意的重复点击提交,如果没有很好的措施来防止这种情况。会对系统的安全性带来隐患。常用的防止重复提交的方法有两种:1.通过javascript代码在客户端浏览器进行处理。2.在服务器端进行处理。 其中第二种的安全性更高。 以下是一个在服务器端进行的防止用户重复提交的一个实...
2011-05-09 16:26:17 510
原创 支付宝电话面试的一些感受
刚才接到了支付宝的电话面试,由于该公司是我朝思暮想都想进去的公司,于是心情太过于激动,直接语无伦次。问题的回答情况可算是很差。 由于问题太多,我当时又过于紧张跟激动,能记下的问题不多,下面三个问题是我回答最差的三个,现总结一下,以期能鞭策自己。 1.MysqL的存储引擎都有哪些,你们项目中用到的是哪个,为什么要选用这个。 2.说一下Thread...
2011-02-21 16:17:40 354
原创 ArrayBlockingQueue源码阅读心得
最近在看林昊写的那本《分布式java应用》,阿里巴巴(包括淘宝、支付宝)是我最想去的地方,所以看淘宝网架构师写的书还是很有必要的。 该书第4章讲到了java.util.concurrent下面的一些常用类,由于书上写的太过笼统,所以找出一些类的源码进行阅读,现把心得写一下,供以后自己参考。 废话不说,先看ArrayBlockingQueue的源码。 ...
2011-01-26 22:04:18 84
Effective java,java程序员的武林秘籍
很早之前就看到有人推荐《Effective java》这本书,本人一直不屑(原谅我的粗陋寡闻),它再好能好过《java编程思想》?!今天无意中翻了两页,马上就欲罢不能。好书,确实是好书,一种相见恨晚的感觉。 可以说《java编程思想》更偏向于武侠世界里面的剑招,读了以后可以学会很多微妙的剑法,当然也能学到内功心法。但是《Effective java》就更像是少林寺的...
2011-01-18 14:24:10 98
centos使用总结
最近在玩centos5.5,特总结一下。 感觉centos比redhat好使多了,JDK装上以后不用在/etc/profile 里做任何设置就能启动。在/etc下的rc.local文件里只需在最后一句添上./ tomcat的startup.sh的路径,就能实现tomcat的开机自启动。不用在该文件中设置JAVA_HOME什么的,就是很方便。 MySql的安装...
2011-01-08 21:33:10 90
jetty最新版 7.2.2
2010-12-23
netty最新版 包括例子程序
2010-12-01
JSEditor eclipse插件
2010-10-18
EJB3.0实例教程
2010-10-17
StrutsTest
2010-10-15
Apache JMeter
2010-10-15
The C++ programming language part2
2010-09-28
The C++ programming language part3
2010-09-27
The C++ programming language part1(特别版中文版)
2010-09-27
Struts2 输入校验
2010-09-18
自己写的struts2类型转换器
2010-09-16
jarfat最新版本
2010-09-13
STRUTS2学习文档
2010-09-12
短信猫所需jar包集合
2010-09-07
Ant最新版 build工具
2010-09-06
velocity-1.6.4
2010-08-29
怎么把控制台的输出信息写到文件里
2010-08-19
TA创建的收藏夹 TA关注的收藏夹
TA关注的人