- 博客(42)
- 资源 (5)
- 收藏
- 关注
原创 Dalvik与ART
1. Android Runtime (ART) 是运行 Android 5.0(API 级别 21)及更高版本的设备的默认运行时2. 调用 System.getProperty("java.vm.version") 来验证正在使用哪种运行时。 如果使用的是 ART,则该属性值将是 "2.0.0" 或更高...
2018-04-08 11:11:23 407
原创 ListView与Adapter部分源码解析
1. adapter.notifyDataSetChange () 此方法是BaseAdapter下面的方法:public abstract class BaseAdapter implements ListAdapter, SpinnerAdapter { private final DataSetObservable mDataSetObservable = new DataSe...
2018-03-01 10:23:58 267
原创 《Android源码设计模式解析与实战》读书笔记
1. onSaveInstanceState()调用时机:当系统存在“未经许可”时销毁了我们的Activity,则此方法会被调用。如以下几种可能发生的情况。a:用户按下Home键b:长按Home键,选择其他运行的程序c:屏幕方法切换d:关闭显示屏e:电话打入做了哪些工作:a:存储窗口的视图数的状态(只会存储有id的那些视图)b:存储Fragmen
2018-01-16 14:04:00 253
原创 设计模式之责任链模式
模式定义:使多个对象都有机会处理请求,避免发送者与接受者直接的耦合关系。模式结构:抽象接收者类,由一些方法以及 另一个抽象接受者类 组成。模式实现:public class IteratorPatternModel { @Test public void testMain() { Leader gro
2018-01-08 16:23:18 209
原创 设计模式之Build模式
模式定义:将一个复杂对象的构建与他的表示分离,即允许用户不知道内部构建细节的情况下,可以精确的控制对象的构建流程。模式结构:略模式实现:public class BuildModel { @Test public void testBuildModel() { Build build = ne
2018-01-08 16:08:18 420
原创 Activity启动流程总结
一、Android系统进程简介1、Android系统进程启动方式:init进程 –> Zygote进程 –> SystemServer进程 –>各种应用进程2、init进程:linux的根进程,android系统是基于linux系统的,因此可以算作是整个android操作系统的第一个进程3、Zygote进程:android系统的根进程,主要作用:可以作用Zygote进程fork出Sys
2017-12-25 09:44:02 1024 1
原创 Handler源码分析
一 Handler是啥?答:emmmm,线程通信?二 如何使用Handler? * class LooperThread extends Thread { * public Handler mHandler; * * public void run() { * Looper.prepare(); * *
2017-12-20 11:25:37 211
原创 ThreadLocal源码分析
一 TheadLocal是什么?ThreadLocal,很多地方叫做线程本地变量,也有些地方叫做线程本地存储,其实意思差不多。ThreadLocal为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量。二 TheadLocal实现原理以前的理解是:ThreadLocal类里面有一个ThreadLocalMap类,这个map以线程为key,存储所
2017-12-19 15:52:49 220
转载 Android项目构建过程
转自: http://blog.csdn.net/qq_23547831/article/details/50634435平时开发过程中我们通过android studio编写完成android项目之后直接点击 Run ‘app’就可以在build/outputs/apk生成可以在android设备中安装的apk文件了,那么整个android源码的构建过程是怎么样的呢?
2017-12-19 11:20:38 271
原创 《深入理解java虚拟机》读书笔记
1. 运行时数据区域1.1 程序技术器可以看作是当前线程所执行的字节码的行号指示器,通过它来取下一条需要执行的指令。线程私有内存。Java虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,在任何一个确定的时刻,一个处理器(对于多核处理器来说是一个内核)都只会执行一条线程中的指令。 因此,为了线程切换后能恢复到正确的执行位置,每条线程都需要有一个独立的程序计数器,各条线
2017-12-09 10:36:12 1233 1
原创 kotlin——从入门到放弃
ps:听了某个LOL王者五大神的建议,取了这个名字简介:我就不介绍了,看官网就行了。网址:http://kotlinlang.org/本文主要记录从java转kotlin时遇到的问题,非学习使用。不过结尾会提供两个pdf版学习书籍给大家。好了,下面开始正文。正文:1. kotlin中的空判断(?)是怎么实现的?,是否线程安全?答:这个空判断应该相当于java中的三目运算符(a == b ? a:b...
2017-08-22 16:04:20 472 1
原创 Object内部方法及通用接口方法解析
1. 比较器两种方式实现比较器:a:实现Comparable接口b:实现Comparator接口public class CompareTest { @Test public void testCompare() { Student a = new Student(1, "b"); Student b = new Stude
2017-06-19 15:20:44 545
原创 自定义控件之帧动画
看到了这篇文章的标题,你也大概知道了这篇文章主要讲什么:利用原生的标签配置帧动画时,如果图片过大,或者图片过多,就会OOM。所以,为了避免这样情况,有以下两种方式:1. 让UI把帧动画设计成gif动画,然后使用某个gif开源框架加载,如:https://github.com/koral--/android-gif-drawable2. 自定义控件实现帧动画本文主要讲的是第二种方
2017-05-31 10:33:50 515
原创 开发问题笔记
1. VideoView在设置match_parent的情况下无法全屏显示重写VideoView的onMeasure方法。@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int widthSize = MeasureSpec.getSize(widthMeas
2017-05-18 14:29:46 282
原创 设计模式之代理模式
模式定义:代理模式就是给一个对象提供一个代理,并由代理对象控制对原对象的引用模式结构:代码模式.png不画图了,就是 一个接口,两个实现A,B。A是代理证,B是真正实现,,A内有一个B的引用。在调用A时,其实是调用B。和适配器模式差不多,只不过这个父类相同。模式实现:public class ProxyPattern
2017-05-17 11:56:26 280
原创 设计模式之状态模式
模式定义:所谓状态模式就是允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类模式结构:模式实现:public class StatePattern { @Test public void testState() { Fish fish = new Fish();
2017-05-16 11:17:08 250
转载 Android图片压缩(质量压缩和尺寸压缩)
Android中图片是以bitmap形式存在的,那么bitmap所占内存,直接影响到了应用所占内存大小,首先要知道bitmap所占内存大小计算方式:图片长度 x 图片宽度 x 一个像素点占用的字节数以下是图片的压缩格式:其中,A代表透明度;R代表红色;G代表绿色;B代表蓝色。ALPHA_8 表示8位Alpha位图,即A=8,一个像素点占用1个字节,它没有
2017-05-12 14:11:06 1009
原创 设计模式之组合模式
模式定义:组合模式组合多个对象形成树形结构以表示“整体-部分”的结构层次。在使用组合模式中需要注意一点也是组合模式最关键的地方:叶子对象和组合对象实现相同的接口。这就是组合模式能够将叶子节点和对象节点进行一致处理的原因。模式结构:模式实现:public class CompositeMode { /**
2017-04-28 16:04:53 318
原创 设计模式之迭代器模式
模式定义:迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而不是暴露其内部的表示迭代器模式把在元素之间游走的责任交给迭代器,而不是聚合对象模式结构:模式实现:public class IteratorMode { /** * 测试类 */ @Test public v
2017-04-28 14:58:21 323
原创 设计模式之模板方法模式
模式定义:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤模式结构:子类继承抽象父类.png(手动滑稽)模式实现:public class Template { /** * 玩lol */ abstract
2017-04-27 18:03:56 231
原创 设计模式之外观模式
模式定义:外观模式提供一个统一的接口,用来访问子系统中的一群接口。外观模式定义了一个高层接口,让子系统更容易使用。模式结构:模式实现:public class FacadeMode { /** * 刷牙 */ class Brush { public void brus
2017-04-27 16:23:39 259
原创 设计模式之适配器模式
模式定义: 适配器模式就是将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间模式结构:模式实现:public class AdapterMode { /** * 羊肉类 */ interface IMutton { void hav
2017-04-27 15:51:29 264
原创 设计模式之命令模式
模式定义: 命令模式将请求封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式支持可撤销的操作。 命令模式可以对发送者额接受者完全解耦,发送者也接收者之间并没有直接的联系,发送者只需要知道如何发送请求,不需要关心请求是如何完成了。这就是命令模式,命令模式将方法调用给封装起来了。模式结构:
2017-04-26 18:12:42 230
原创 设计模式之装饰者模式
模式定义:动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更加有弹性的替代方案。模式结构:模式实现:public class DecorationMode { /** * 基类 */ abstract class Human { public String name;
2017-04-26 15:02:34 235
原创 设计模式之观察者模式
模式定义: 观察者模式定义了对象之间的一对多依赖关系,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并且自动更新。 在这里,发生改变的对象称之为观察目标,而被通知的对象称之为观察者。一个观察目标可以对应多个观察者,而且这些观察者之间没有相互联系,所以么可以根据需要增加和删除观察者,使得系统更易于扩展。 观察者模式又称为发布-订
2017-04-26 11:20:00 267
原创 设计模式之工厂模式
工厂模式主要为创建对象提接口,主要分为三种:简单工厂模式、工厂方法模式、抽象工厂模式。一、简单工厂模式模式定义:简单工厂模式又称之为静态工厂方法,属于创建型模式。在简单工厂模式中,可以根据传递的参数不同,返回不同类的实例。简单工厂模式定义了一个类,这个类专门用于创建其他类的实例,这些被创建的类都有一个共同的父类。模式结构:模式实现:pub
2017-04-25 15:51:46 292
原创 设计模式之单例模式
模式定义:确保某一个类只有一个实例,并且提供一个全局访问点模式结构:略模式实现:这里介绍三种实现方式,分别是DCL(双重检查锁定),静态内部类,枚举。DCL:public class Singleton { //通过volatile关键字来确保安全 private volatile static Singleton singleton
2017-04-25 14:42:27 229
原创 设计模式之策略模式
模式定义:定义了算法族,分别封装起来,让他们之前可以互相转换,此模式然该算法的变化独立于使用算法的客户。模式结构:模式实现:public class Strategy { /** * 抽象交通工具类 */ abstract class Vehicle { /** * 名称 */
2017-04-25 12:06:35 359
原创 java实现简单的队列和栈
栈:public class Stack { private Object[] data;//存储数据 private int top;//表示栈顶元素 public Stack(){ data = new Object[100];//为了说明原理随意指定 top =-1; } public synchronized vo
2017-04-21 16:10:43 297
转载 HashMap深度解析
HashMap可以说是Java中最常用的集合类框架之一,是Java语言中非常典型的数据结构,我们总会在不经意间用到它,很大程度上方便了我们日常开发。在很多Java的笔试题中也会被问到,最常见的,“HashMap和HashTable有什么区别?”,这也不是三言两语能说清楚的,这种笔试题就是考察你来笔试之前有没有复习功课,随便来个快餐式的复习就能给出简单的答案。 HashMap计划写两
2017-04-21 14:00:21 407
转载 ArrayList与LinkedList
ArrayList就是传说中的动态数组,就是Array的复杂版本,它提供了如下一些好处:动态的增加和减少元素、灵活的设置数组的大小...... 认真阅读本文,我相信一定会对你有帮助。比如为什么ArrayList里面提供了一个受保护的removeRange方法?提供了其他没有被调用过的私有方法? 首先看到对ArrayList的定义:[java] v
2017-04-21 10:32:58 350
转载 Android性能优化-内存泄漏(下)
如何进行内存泄漏的分析使用Android Studio MonitorsAndroidMonitors是Android Studio自带的功能,我们可以通过里面的Memory模块来进行内存泄漏的分析,平时开发我们也可以通过该模块来观察内存的抖动情况。这里我们首先知道,标注1是进行GC的操作,标注2是进行Dump操作,也就是可以生成我们瞬时的堆内存快照,我们主要也
2017-04-20 11:37:51 373
转载 Android性能优化-内存泄漏(上)
为什么要做性能优化?手机性能越来越好,不用纠结这些细微的性能?Android每一个应用都是运行的独立的Dalivk虚拟机,根据不同的手机分配的可用内存可能只有(32M、64M等),所谓的4GB、6GB运行内存其实对于我们的应用不是可以任意索取优秀的算法与效率低下的算法之间的运行效率要远远超过计算机硬件的的发展,虽然手机单核、双核到4核、8核的发展,但性能
2017-04-20 11:36:08 455
原创 EventBus注意点
研究了EventBus源码,不贴分析过程,有兴趣的同学自己查看阅读,这才是真程序员(PS:真不是我不擅长写文档,真的呦)。源码地址:https://github.com/greenrobot/EventBus官方文档地址:http://greenrobot.org/eventbus/1. EventBus有几种ThreadMode:private void postToSubscrip
2017-04-20 09:49:40 419
转载 Android XML shape 标签使用详解(apk瘦身,减少内存好帮手)
Android XML shape 标签使用详解 一个android开发者肯定懂得使用 xml 定义一个 Drawable,比如定义一个 rect 或者 circle 作为一个 View 的背景。但是,也肯定也有人在能使用 Drawable 的地方选择使用一张 png 图(或者是一张 .9 图)作为 View 的背景,因为后者把问题交给 UI 设计人员去了,省事。当然,使用图片这种在项目
2017-04-18 17:32:48 806
转载 UML类图几种关系的总结
在UML类图中,常见的有以下几种关系:泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency) 1.泛化(Generalization)【泛化关系】:是一种继承关系,它指定了子类如何特化父类的所有特征和行为例如:老虎是动物的一种.【箭头指向】
2017-04-17 15:58:30 374
原创 JsBridge实现及原理
首先贴出来源码地址:https://github.com/lzyzsd/JsBridge一、概述JsBridge实现java和js的互相调用的桥梁。替代了WebView的自带的JavascriptInterface的接口,使得开发者更方便的让js和native灵活交互,使我们的开发更加灵活和安全。Android API 4.2以前,谷歌的webview存在安
2017-04-17 14:31:28 14302 3
原创 Android studio相关,持续更新
使用技巧相关:Android Studio安装完成后,第一次启动AS前,为了避免重新下载新版本的SDK,可做如下操作:打开安装目录,将bin目录的idea.properties文件中增加一行:disable.android.first.run=true快捷键:成员变量注释:Fix doc commend换行:start new line回到上一次编辑出:ba
2017-04-13 15:37:34 337
转载 Android推送技术研究
前言最近研究Android推送的实现, 研究了两天一夜, 有了一点收获, 写下来既为了分享, 也为了吐槽. 需要说明的是有些东西偏底层硬件和通信行业, 我对这些一窍不通, 只能说说自己的理解.为什么要研究Android推送技术? 主要还是毕业设计要做一个即时通信app, 我是不喜欢做什么社交app的, 也就象牙塔里的人想得出来, 说实话有这功夫还不如钻研一个小技术点, 把一个点研究
2017-04-13 14:54:06 510
原创 adb shell 相关,持续更新
名称解释adb:Android debug bridgeam: activity managerpm: package managershell:lue常用的命令通过包名类名启动某个activity:adb shell am start -n com.pgqzone.android/.MainActivity(如果apk包名与文件路径包名不一致,不可用“.MainActivity”形式, n表示c
2017-04-12 19:22:38 726
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人