摘要:
在这篇文章里,我会介绍下Glide中的一些关键概念,并走一遍图片加载流程,如果你要阅读Glide源码的话,应该多少会有点帮助。 阅读全文
摘要:
最近在使用UniversalImageLoader时遇到了一个小问题,多个地方同时通过`ImageLoader.getInstance().loadImage(url, new ImageSize(dp72, dp72)...`加载图像时,有一定机率只有部分地方能正确地加载到图片,其他地方是什么结果... 阅读全文
摘要:
换了手机号,挨个网站改关联的手机号,一切都很顺利,直到遇到了支付宝。进支付宝修改号码,提示新号码已被使用,明明是刚办的卡,好吧,先不修改号码了,先解绑原来的号码吧,免得旧号停用时再修改麻烦,竟然解绑也失败,只有找客服了。跟客服扯半天,终于在客服的帮助下修改了绑定的手机号,接下来就是设置手机号为登录名... 阅读全文
摘要:
我们很多人应该都做过这样的操作,打开拨号键盘输入**\*#\*#4636#\*#\***等字符就会弹出一个界面显示手机相关的一些信息,这个功能在Android中被称为**android secret code**,除了这些系统预置的secret code,我们也可以实现自己的secret code,... 阅读全文
摘要:
调试SQLite的神器,再也不用自己去打Log了,只需简单的几个命令。``` bashadb shell setprop log.tag.SQLiteLog Vadb shell setprop log.tag.SQLiteStatements Vadb shell stopadb shell st... 阅读全文
摘要:
通过RelativeLayout用代码动态改变布局 阅读全文
摘要:
自定义标题文字样式标题样式是ActionBar样式的一部分,所以要先定义ActionBar的样式然后在ActionBar的样式中通过android:titleTextStyle定义标题的样式自定义副标题文字样式副标题样式同样是ActionBar样式的一部分,在ActionBar模式中通过androi... 阅读全文
摘要:
# 垃圾收集算法## 引用计数堆中的每个对象都有一个引用计数,当对象被引用时引用计数加1,当对象的引用被重新赋值或超出有效区域时引用计数减1,当一个对象被回收后,它所引用的对象的引用计算减1。当一个对象的引用计数变为0时就被回收。### 引用计数的优点:垃圾收集器可以很快地执行,当一个对象的引用数为... 阅读全文
摘要:
当打开一个Activity时,如果这个Activity所属的应用还没有在运行,系统会为这个Activity所属的应用创建一个进程,但进程的创建与初始化都需要时间,在这个动作完成之前系统要做什么呢?如果没有任何反应的话,如果程序初始化的时间很长,用户可能还以为没有点到相应的位置。但此时所启动的程序还没... 阅读全文
摘要:
JVM的主要结构如下图所示,图片引用自[舒の随想日记][1]。![JVM结构][2]方法区和堆由所有线程共享,其他区域都是线程私有的# 程序计数器(Program Counter Register)类似于PC寄存器,是一块较小的内存区域,通过程序计数器中的值寻找要执行的指令的字节码,由于多线程间切换... 阅读全文
摘要:
表驱动法是一种编程模式,从表里面查找信息而不是使用逻辑语句(if…else…switch),当是很简单的情况时,用逻辑语句很简单,但如果逻辑很复杂,再使用逻辑语句就很麻烦了。比如查找一年中每个月份的天数,如果用表驱动法,完全不需要写一堆if…else…语句,直接把每个月份的天数存到一个数组里就行了,... 阅读全文
摘要:
Retrofit是一个不错的网络请求库,用官方自己的介绍就是:A type-safe REST client for Android and Java看官网的介绍用起来很省事,不过如果不了解它是怎么实现的也不太敢用,不然出问题了就不知道怎么办了。这几天比较闲就下下来看了一下,了解一下大概实现方法,细... 阅读全文
摘要:
Volley是Google推出的一个网络请求库,已经被放到了Android源码中,地址在这里,先看使用方法RequestQueue mRequestQueue = Volley.newRequestQueue(context);JsonObjectRequest req = new JsonObje... 阅读全文
摘要:
先来看一下最基本的用法AsyncHttpClient client = new AsyncHttpClient();client.get("http://www.google.com", new AsyncHttpResponseHandler() { @Override public ... 阅读全文
摘要:
项目需求一改再改,UI一调再调,结果就是项目中一堆已经用不到但却没有清理的垃圾资源,不说工程大小问题,对新进入项目的人或看其他模块的代码的人来说,这些没清理的资源可能也可能会带来困扰,所以最好还是清理掉这些垃圾,对于一个稍微大一点的工程来说,手工清理明显是不现实的,这就需要一个方法做这些事情。# 清... 阅读全文
摘要:
先吐槽一下博客园的MarkDown编辑器,推出的时候还很高兴博客园支持MarkDown了,试用了下发现支持不完善就没用了,这次这篇是在其他编辑器下写的,复制过来后发现。。太烂了。怎么着作为一个技术博客社区,对代码的支持应该完善一下吧,`行内代码块`不支持就算了,代码段内还不能有空行,一有空行就识别不... 阅读全文
摘要:
使用微信的朋友圈会发现,点击某一条评论后输入框会弹出来,然后所点击的那一项会自动地滚动到输入框上方的位置,这样如果开始所点击的评论在屏幕很下方的话,就不会被输入框遮住,虽然微信这一点在我的MX2频繁点几次后滚动的位置就完全错误了,但据说在有些机型上效果还不错,还有其他地方可能会有类似的需求,比如登录... 阅读全文
摘要:
重构,绝对是写程序过程中最重要的事之一。在写程序之前我们不可能事先了解所有的需求,设计肯定会有考虑不周的地方,而且随着项目需求的修改,也有可能原来的设计已经被改得面目全非了。更何况,**我们很少有机会从头到尾完成一个项目**,基本上都是接手别人的代码,即使这个项目是从头参与的,也有可能接手其他组员的代码。我们都有过这样的经验,看到别人的代码时感觉就像屎一样,有一种强烈的想重写的冲动,但一定要压制住这种冲动,你完全重写,可能比原来的好一点,但浪费时间不说,还有可能引入原来不存在的Bug,而且,你不一定比原来设计得好,也许原来的设计考虑到了一些你没考虑到的情况。我们写的代码,终有一天也会被别人接手 阅读全文
摘要:
设置autoLink=email但系统上没有邮件客户端时点击邮件链接程序会挂掉的解决方法。
跳往应用市场评分,但系统上没有应用市场时程序会挂掉的解决方法。 阅读全文
摘要:
零、序一、自定义Style二、在XML中为属性声明属性值 1. 在layout中定义属性 2. 设置Style 3. 通过Theme指定三、在运行时获取属性值 1.View的第三个构造函数的第三个参数defStyle 2. obtailStyledAttributes 3. Example四、结论与代码下载零、序 系统自带的View可以在xml中配置属性,对于写的好的Custom View同样可以在xml中配置属性,为了使自定义的View的属性可以在xml中配置,需要以下4个步骤:通过为自定义View添加属性在xml中为相应的属性声明属性值在运行时(一般为构造函数)获取属性值将获... 阅读全文
摘要:
版本控制 版本控制是什么已不用在说了,就是记录我们对文件、目录或工程等的修改历史,方便查看更改历史,备份以便恢复以前的版本,多人协作。。。一、原始版本控制 最原始的版本控制是纯手工的版本控制:修改文件,保存文件副本。有时候偷懒省事,保存副本时命名比较随意,时间长了就不知道哪个是新的,哪个是老的了... 阅读全文
摘要:
Android是消息驱动的,实现消息驱动有几个要素:消息的表示:Message消息队列:MessageQueue消息循环,用于循环取出消息进行处理:Looper消息处理,消息循环从消息队列中取出消息后要对消息进行处理:Handler平时我们最常使用的就是Message与Handler了,如果使用过H... 阅读全文
摘要:
Android在Native层实现了进程间的Binder通信,但是上层应用程序的开发及Framework的实现都是Java,用Java层再实现一次肯定是不合理的,Java可以通过JNI调用Native Code,所以通过JNI复用Binder在Native层的实现就是一个顺理成章的事情。注册Serv... 阅读全文
摘要:
关于Binder的设计思想与Driver层实现细节可以看这个:Android Binder设计与实现 - 设计篇,这里首先简要概括一下。Service的每个Binder实体位于Service所属的进程种中,Binder实体在驱动中被表示为binder_node,并通过成员refs指向了驱动中所有对这... 阅读全文
摘要:
摘要Binder是Android系统进程间通信(IPC)方式之一。Linux已经拥有管道,system V IPC,socket等IPC手段,却还要倚赖Binder来实现进程间通信,说明Binder具有无可比拟的优势。深入了解Binder并将之与传统IPC做对比有助于我们深入领会进程间通信的实现和性... 阅读全文