自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 收藏
  • 关注

转载 Glide源码导读

最近比较无聊,为了找点事干,就花了两天时间把Glide的源码大概看了一下。刚开始看Glide的源码头脑还是比较乱的,因为作者引入了几个概念,又大量用了泛型,如果不了解这些概念读起代码来就比较痛苦,我也没有详细看各种实现细节的东西,只是了解了下这个框架的大概样子,在这篇文章里,我会介绍下Glide中的一些关键概念,并走一遍图片加载流程,如果你要阅读Glide源码的话,应该多少会有点帮助。...

2016-09-05 13:41:00 188

转载 UniversalImageLoader的一个小问题

最近在使用UniversalImageLoader时遇到了一个小问题,多个地方同时通过ImageLoader.getInstance().loadImage(url, new ImageSize(dp72, dp72)...加载图像时,有一定机率只有部分地方能正确地加载到图片,其他地方是什么结果呢?从Log看是这个样子:1 03-19 15:41:44.167 1500-1541/x...

2015-03-19 18:09:00 158

转载 手机号作为登录名真的好吗--慎用支付宝手机号转账

换了手机号,挨个网站改关联的手机号,一切都很顺利,直到遇到了支付宝。进支付宝修改号码,提示新号码已被使用,明明是刚办的卡,好吧,先不修改号码了,先解绑原来的号码吧,免得旧号停用时再修改麻烦,竟然解绑也失败,只有找客服了。跟客服扯半天,终于在客服的帮助下修改了绑定的手机号,接下来就是设置手机号为登录名,毕竟输入手机号比输入邮箱方便。可竟然又设置失败,客服解释说可能是因为我的手机号是运...

2015-02-28 10:00:00 421

转载 Android Secret Code

我们很多人应该都做过这样的操作,打开拨号键盘输入*#*#4636#*#*等字符就会弹出一个界面显示手机相关的一些信息,这个功能在Android中被称为android secret code,除了这些系统预置的secret code,我们也可以实现自己的secret code,而且实现起来非常简单。要实现自己的secret code,只需要向系统注册一个Broadcast Receive...

2014-09-23 16:53:00 163

转载 Android SQLite调试

调试SQLite的神器,再也不用自己去打Log了,只需简单的几个命令。adb shell setprop log.tag.SQLiteLog Vadb shell setprop log.tag.SQLiteStatements Vadb shell stopadb shell start结果如下所示V/SQLiteStatements( 4405): /data/data/...

2014-07-24 21:26:00 124

转载 Android动态改变布局

遇到这么个需求,先看图: 其实是一个软件的登录界面,初始是第一个图的样子,当软键盘弹出后变为第二个图的样子,因为登录界面有用户名、密码、登录按钮,不这样的话软键盘弹出后会遮住登录按钮(其实之前的实现放到了ScrollView里面,监听软键盘弹出后滚动到底部,软键盘隐藏后滚动到顶部,也是可以的)。最简单的方法就是多加几个冗余的View,根据软键盘的状态隐藏不需要的View...

2014-07-11 09:17:00 169

转载 自定义ActionBar标题与菜单中的文字样式

自定义标题文字样式标题样式是ActionBar样式的一部分,所以要先定义ActionBar的样式<style name="AppTheme" parent="AppBaseTheme"> <item name="android:actionBarStyle">@style/CustomActionBar</item></...

2014-07-10 17:33:00 131

转载 Java垃圾回收

垃圾收集算法引用计数堆中的每个对象都有一个引用计数,当对象被引用时引用计数加1,当对象的引用被重新赋值或超出有效区域时引用计数减1,当一个对象被回收后,它所引用的对象的引用计算减1。当一个对象的引用计数变为0时就被回收。引用计数的优点:垃圾收集器可以很快地执行,当一个对象的引用数为0时就可以回收这个对象,垃圾收集交织在程序的正常执行过程中,不用长时间中断程序的正常执行。引用计数...

2014-06-23 14:34:00 82

转载 Android Starting Window(Preview Window)

当打开一个Activity时,如果这个Activity所属的应用还没有在运行,系统会为这个Activity所属的应用创建一个进程,但进程的创建与初始化都需要时间,在这个动作完成之前系统要做什么呢?如果没有任何反应的话,如果程序初始化的时间很长,用户可能还以为没有点到相应的位置。但此时所启动的程序还没初始化完,既无法显示程序,又不能停在原处不做任何动作,怎么办?这就有了Starting W...

2014-06-22 09:46:00 115

转载 JVM虚拟机结构

JVM的主要结构如下图所示,图片引用自舒の随想日记。方法区和堆由所有线程共享,其他区域都是线程私有的程序计数器(Program Counter Register)类似于PC寄存器,是一块较小的内存区域,通过程序计数器中的值寻找要执行的指令的字节码,由于多线程间切换时要恢复每一个线程的当前执行位置,所以每个线程都有自己的程序计算器。这一个区域不会有OutOfMemeryError。...

2014-06-21 17:17:00 138

转载 表驱动法 -《代码大全》读书笔记

表驱动法是一种编程模式,从表里面查找信息而不是使用逻辑语句(if…else…switch),当是很简单的情况时,用逻辑语句很简单,但如果逻辑很复杂,再使用逻辑语句就很麻烦了。比如查找一年中每个月份的天数,如果用表驱动法,完全不需要写一堆if…else…语句,直接把每个月份的天数存到一个数组里就行了,取值的时候直接下标访问,最多针对二月判断一下闰年。这么算的话,平时用的的HashM...

2014-05-29 16:58:00 95

转载 快速Android开发系列网络篇之Retrofit

Retrofit是一个不错的网络请求库,用官方自己的介绍就是:A type-safe REST client for Android and Java看官网的介绍用起来很省事,不过如果不了解它是怎么实现的也不太敢用,不然出问题了就不知道怎么办了。这几天比较闲就下下来看了一下,了解一下大概实现方法,细节就不追究了。先来看一个官网的例子,详细说明去网官看简单示...

2014-05-29 16:56:00 134

转载 快速Android开发系列网络篇之Volley

Volley是Google推出的一个网络请求库,已经被放到了Android源码中,地址在这里,先看使用方法RequestQueue mRequestQueue = Volley.newRequestQueue(context);JsonObjectRequest req = new JsonObjectRequest(URL, null, new Respon...

2014-05-19 13:46:00 134

转载 快速Android开发系列网络篇之Android-Async-Http

先来看一下最基本的用法AsyncHttpClient client = new AsyncHttpClient();client.get("http://www.google.com", new AsyncHttpResponseHandler() { @Override public void onSuccess(String response) {...

2014-05-16 13:11:00 301

转载 清除Android工程中没用到的资源

项目需求一改再改,UI一调再调,结果就是项目中一堆已经用不到但却没有清理的垃圾资源,不说工程大小问题,对新进入项目的人或看其他模块的代码的人来说,这些没清理的资源可能也可能会带来困扰,所以最好还是清理掉这些垃圾,对于一个稍微大一点的工程来说,手工清理明显是不现实的,这就需要一个方法做这些事情。清理资源文件要清理没用的资源,首要的工作当然是找到他们,我们知道Anroid SDK中有一个...

2014-05-13 13:54:00 152

转载 快速Android开发系列通信篇之EventBus

先吐槽一下博客园的MarkDown编辑器,推出的时候还很高兴博客园支持MarkDown了,试用了下发现支持不完善就没用了,这次这篇是在其他编辑器下写的,复制过来后发现。。太烂了。怎么着作为一个技术博客社区,对代码的支持应该完善一下吧,`行内代码块`不支持就算了,代码段内还不能有空行,一有空行就识别不了了。而且试着用MarkDown发了篇草稿,右边的侧边栏竟然被挤到屏幕下方了,还影响到了博...

2014-05-08 13:08:00 268

转载 Android点击列表后弹出输入框,所点击项自动滚动到输入框上方

使用微信的朋友圈会发现,点击某一条评论后输入框会弹出来,然后所点击的那一项会自动地滚动到输入框上方的位置,这样如果开始所点击的评论在屏幕很下方的话,就不会被输入框遮住,虽然微信这一点在我的MX2频繁点几次后滚动的位置就完全错误了,但据说在有些机型上效果还不错,还有其他地方可能会有类似的需求,比如登录时软键盘可能会把登录按钮遮住。要实现这个功能需要注意的地方主要有两点:什么时候...

2014-04-02 09:28:00 276

转载 《重构,改善既有代码的设计》读书笔记

重构,绝对是写程序过程中最重要的事之一。在写程序之前我们不可能事先了解所有的需求,设计肯定会有考虑不周的地方,而且随着项目需求的修改,也有可能原来的设计已经被改得面目全非了。更何况,我们很少有机会从头到尾完成一个项目,基本上都是接手别人的代码,即使这个项目是从头参与的,也有可能接手其他组员的代码。我们都有过这样的经验,看到别人的代码时感觉就像屎一样,有一种强烈的想重写的冲动,但一定要压制...

2014-03-15 11:12:00 145

转载 系统中没有邮件客户端设置autoLink=email会挂掉的问题

  TextView的autoLink属性为我们提供了很大的便利性,当文本中有网址,邮箱或电话的时候可以让我们方便地执行打电话发邮件等动作,不过也有一些问题,比如说设置autoLink包含email属性,当文本中有邮件地址时只要点击就可以调用邮件客户端来发邮件,但是如果当前系统中没有邮件客户端可供调用,程序会直接挂掉。  通过看Log可以发现,系统抛出了ActivityNotFoun...

2013-12-22 12:12:00 356

转载 Android中自定义样式与View的构造函数中的第三个参数defStyle的意义

零、序一、自定义Style二、在XML中为属性声明属性值  1. 在layout中定义属性  2. 设置Style  3. 通过Theme指定三、在运行时获取属性值  1.View的第三个构造函数的第三个参数defStyle  2. obtailStyledAttributes  3. Example四、结论与代码下载零、序  系统自带的...

2013-12-18 13:32:00 201

转载 Git与Repo入门

版本控制  版本控制是什么已不用在说了,就是记录我们对文件、目录或工程等的修改历史,方便查看更改历史,备份以便恢复以前的版本,多人协作。。。一、原始版本控制  最原始的版本控制是纯手工的版本控制:修改文件,保存文件副本。有时候偷懒省事,保存副本时命名比较随意,时间长了就不知道哪个是新的,哪个是老的了,即使知道新旧,可能也不知道每个版本是什么内容,相对上一版作了什么修改了,当几...

2013-11-26 13:58:00 432

转载 Android消息处理机制(Handler、Looper、MessageQueue与Message)

Android是消息驱动的,实现消息驱动有几个要素:消息的表示:Message消息队列:MessageQueue消息循环,用于循环取出消息进行处理:Looper消息处理,消息循环从消息队列中取出消息后要对消息进行处理:Handler平时我们最常使用的就是Message与Handler了,如果使用过HandlerThread或者自己实现类似HandlerThre...

2013-09-29 16:00:00 259

转载 Binder in Java

Android在Native层实现了进程间的Binder通信,但是上层应用程序的开发及Framework的实现都是Java,用Java层再实现一次肯定是不合理的,Java可以通过JNI调用Native Code,所以通过JNI复用Binder在Native层的实现就是一个顺理成章的事情。注册Service在Init进程的init2阶段,系统启动了ServerThread,在Ser...

2013-09-23 14:52:00 58

转载 Binder In Native

关于Binder的设计思想与Driver层实现细节可以看这个:Android Binder设计与实现 - 设计篇,这里首先简要概括一下。Service的每个Binder实体位于Service所属的进程种中,Binder实体在驱动中被表示为binder_node,并通过成员refs指向了驱动中所有对这个Binder实体的引用,Binder引用在驱动被表示为binder_ref,并通过成...

2013-09-17 15:23:00 106

转载 [转]Android Binder设计与实现 - 设计篇

摘要Binder是Android系统进程间通信(IPC)方式之一。Linux已经拥有管道,system V IPC,socket等IPC手段,却还要倚赖Binder来实现进程间通信,说明Binder具有无可比拟的优势。深入了解Binder并将之与传统IPC做对比有助于我们深入领会进程间通信的实现和性能优化。本文将对Binder的设计细节做一个全面的阐述,首先通过介绍Binder通信模...

2013-09-02 14:16:00 70

转载 android startService流程梳理笔记

1、ContextWrapper.startService  startService是Context的方法,Activity、Service都继承自ContextWrapper,而ContextWrapper又继承自Context,BroadcastReceiver的onReceive方法中有个参数是Context类型的,所以我们在Activity、Service、Broadcas...

2013-05-24 11:50:00 108

转载 Android Low Memory Killer

Low Memory Killer的原理  在Android中,即使当用户退出应用程序之后,应用程序的进程也还是存在于系统中,这样是为了方便程序的再次启动,但是这样的话,随着打开的程序数量的增加,系统的内存会变得不足,就需要杀掉一部分进程以释放内存空间。至于是否需要杀死一些进程和哪些进程需要被杀死,是通过Low Memory Killer机制来进行判定的。  Android的Lo...

2013-05-21 16:38:00 150

转载 Android编译系统

一、Android编译步骤:  二、初始化编译环境--source build/envsetup.sh  在build/envsetup.sh中主要完成了三件事。    添加编译目标的代码如下:for f in `/bin/ls vendor/*/vendorsetup.sh vendor/*/*/vendorsetup.sh device/*/*/vendo...

2013-05-19 12:55:00 199

转载 Android指针管理:RefBase,SP,WP

Android中通过引用计数来实现智能指针,并且实现有强指针与弱指针。由对象本身来提供引用计数器,但是对象不会去维护引用计数器的值,而是由智能指针来管理。要达到所有对象都可用引用计数器实现智能指针管理的目标,可以定义一个公共类,提供引用计数的方法,所有对象都去继承这个公共类,这样就可以实现所有对象都可以用引用计数来管理的目标,在Android中,这个公共类就是RefBase,同时还有...

2013-03-10 12:48:00 155

转载 Android图片异步加载

开发Android程序,一般情况下都会有两个操作,图片的异步加载与缓存,而图片的异步加载大都是从网络读取图片(还有生成本地图片缩略图等操作),为了减少网络操作,加快图片加载速度就需要对图片进行缓存,所以网上的好多图片异步加载方法都是与图片的缓存紧密关联的。但也有可能用户已经有了缓存的相关类库,这样使用起来就会有点麻烦。最近一段处理跟图片相关的问题,本来是自己写的图片加载,不过有些状态...

2012-09-16 02:19:00 121

转载 android中layout_weight的理解

SDK中的解释:Indicates how much of theextra spacein the LinearLayout will be allocated to the view associated with these LayoutParams. Specify 0 if the view should not be stretched. Otherwise th...

2012-04-08 16:44:00 138

转载 自定义SimpleAdapter

SimpleAdapter,跟名字一样,一个简单的适配器,既为简单,就只是被设计来做简单的应用的,比如静态数据的绑定,不过仍然有自定义的空间,比如说在每一个ListItem中加一个按钮并添加响应事件.首先还是先看一下SimpleAdapter的定义吧,直接翻译下SDK doc 吧:  这是一个简单的适配器,可以将静态数据映射到XML文件中定义好的视图。你可以指定由Map组成的Li...

2012-04-05 00:34:00 128

转载 Android自定义对话框(Dialog)位置,大小

代码:package angel.devil;import android.app.Activity;import android.app.Dialog;import android.os.Bundle;import android.view.Gravity;import android.view.Window;import android.view.WindowManager;...

2012-03-31 00:26:00 1321

转载 Android Touch事件

  Android中跟Touch事件有关的事件有三个:    public boolean dispatchTouchEvent(MotionEvent ev):传递Touch事件至target view(可以是自己)。    public boolean onInterceptTouchEvent(MotionEvent ev):在ViewGroup中定义,用于拦截Touch事件的传递...

2012-02-23 15:06:00 58

转载 Android动画学习笔记-Android Animation

3.0以前,android支持两种动画模式,tween animation,frame animation,在android3.0中又引入了一个新的动画系统:property animation,这三种动画模式在SDK中被称为property animation,view animation,drawable animation。 可通过NineOldAndroids项目在3.0之前的系...

2011-12-02 17:16:00 328

转载 Android 2.0以后的Contacts API--ContactsContract

联系人信息的存储结构:从Android 2.0(API Level 5)开始,Android平台提供了一个改进的Contacts API,以适应一个联系人可以有多个帐户的需求,比如说手机通讯录和GMAIL通讯录,两个通讯录中的两条记录可以是同一个人。新的Contacts API主要是由ContactsContract及其相关的类来管理,旧的API(android.provider.C...

2011-11-23 11:54:00 343

转载 Adapter的继承结构

Adapter的作用Adapter是AdapterView视图与数据之间的桥梁,Adapter提供对数据的访问,也负责为每一项数据产生一个对应的View。其作用如下图所示:Adapter的继承结构各个类的作用AdapterAdapter做为这个继承结构的最顶层的基接口,定义了Adapter要实现的基本方法:public interface Adapter ...

2011-11-20 12:37:00 163

转载 C++ Primer笔记

指针和typedef:typedef string *pstringconst pstring cstr;等价于string * const cstrcstr为const指针,而不是cstr指向const string,typedef不是简单的文本扩展,声明const pstring时,const修饰的是pstring,pstring是指针,所以const...

2011-10-11 21:58:00 88

转载 触发checkbox的click事件时遇到的问题

  因一些原因要实现checkbox的单选,实现的方法是当选中一个checkbox时,用jQuery选择除这个刚选中的checkbox外所有已经被选中的checkbox,然后触发其click事件(因为每个checkbox状态改变时要处理一些问题,所以不能直接将其checked状态改为false),但却莫名其妙地进入了无限循环.<!DOCTYPE HTML PUBLIC "-...

2011-07-28 20:27:00 545

转载 JavaScript数据类型

JavaScript中有5种简单数据类型:Undefined、Null、Boolean、Number和String,还有一种复杂数据类型----Object.typeof操作符用typeof操作符可以测定给定变量的数据类型,可能会返回下列某个字符串: undefined----变量未定义或未赋值 boolean------布尔值 s...

2011-07-05 20:31:00 45

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除