
android系列
Jo__yang
这个作者很懒,什么都没留下…
展开
-
Android 检测应用中的UI卡顿
在做app性能优化的时候,大家都希望能够写出丝滑的UI界面,目前已经有两种比较典型方式来检测了:利用UI线程Looper打印日志利用Choreographer一,利用loop()中打印的日志(1)原理大家都知道在Android UI线程中有个Looper,在其loop方法中会不断取出Message,调用其绑定的Handler在UI线程进行执行。大致代码如下: public static voi原创 2017-03-13 12:53:39 · 922 阅读 · 0 评论 -
Java设计模式之抽象工厂模式
上两篇讲解了简单工厂模式和工厂方法模式,下面讲解工厂模式的最后一个抽象工厂模式随着客户的要求越来越高,宝马车需要不同配置的空调和发动机等配件。于是这个工厂开始生产空调和发动机,用来组装汽车。这时候工厂有两个系列的产品:空调和发动机。宝马320Li系列配置A型号空调和A型号发动机,宝马520Li系列配置B型号空调和B型号发动机。概念:抽象工厂模式(Abstract Factory Pattern):提原创 2016-09-20 11:12:07 · 701 阅读 · 0 评论 -
Java设计模式之工厂方法模式
Java设计模式之工厂方法模式上一篇讲解了简单工厂模式,下面讲解简单工厂模式的升级版,工厂方法模式。工厂方法模式(Factory Method Pattern)又称为工厂模式,也叫虚拟构造器(Virtual Constructor)模式或者多态工厂(Polymorphic Factory)模式,它属于类创建型模式。在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产原创 2016-09-20 10:59:51 · 619 阅读 · 0 评论 -
Dagger2使用简析
是时候学习dagger2了原创 2016-09-22 16:32:21 · 2037 阅读 · 0 评论 -
android 自定义View 三 ---- LayoutInflater
说到自定义view就不得提到LayoutInflater,虽然我们在代码中可以直接用new方法构造出各种View,然后再添加各种属性去控制View的大小和位置等布局,但是这是很复杂繁琐的,细节优化更麻烦困难,面对复杂布局,用代码构造更显得无力。这时我们必须借助于LayoutInflater这个神器了。LayoutInflater的作用就是能够将value/layout目录下的xml布局文件,实原创 2016-09-05 17:56:02 · 1940 阅读 · 0 评论 -
Java设计模式之简单工厂模式
在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的。但是在一些情况下, new操作符直接生成对象会带来一些问题。举例来说, 许多类型对象的创造需要一系列的步骤: 比如你可能需要计算或取得对象的初始设置; 选择生成哪个子对象实例;在这些情况,新对象的建立就是一个 “过程”,不仅是一个操作。模式的问题:你如何能轻松方便地构造对象实例,而不必关心构造对象原创 2016-09-17 23:51:58 · 866 阅读 · 0 评论 -
Android 自定义View 二
在上一篇文章android 自定义view 中我们总结了自定义View的几大步骤如下:1、自定义View的属性2、在View的构造方法中获得我们自定义的属性3、重写onMesure方法4、重写onLayout方法5、重写onDraw方法因为上篇文章中我们完成了LabelImageView中的一个LabelView子view,所以不用重写onLayout方原创 2016-09-04 21:35:52 · 599 阅读 · 0 评论 -
【Java并发编程】Runnable和Thread实现多线程的区别
Java中实现多线程有两种方法:继承Thread类、实现Runnable接口。一个类只要继承了Thread类同时覆写了本类中的run()方法就可以实现多线程操作了,但是一个类只能继承一个父类,这是此方法的局限。在程序开发中只要是多线程,肯定永远以实现Runnable接口为主,因为实现Runnable接口相比继承Thread类有如下优势: 1、可以避免由于Java的单继承特性而带来的局原创 2016-08-10 11:21:08 · 1073 阅读 · 0 评论 -
Java Annotation 简析
二、Annotation 概念手把手教你打造bindview注解原创 2016-09-11 10:13:41 · 797 阅读 · 0 评论 -
Retrofit 使用 一
前言时至今日,Android的网络框架不再像之前那么到处都是,随着Google把 HttpClient直接删掉,似乎意味着Android越来越成熟。网络框架中的佼佼者Volley也不再那么光鲜,取而代之的是 Retrofit 和 okHttp。如今不会使用Retrofit + okHttp + RxJava等一系列技术,就迈不进新时代的门槛,跟不上时代的步伐。1.原创 2016-09-08 16:42:43 · 2877 阅读 · 0 评论 -
面向对象六大原则----接口隔离原则,迪米特原则
Java 中面向对象编程六大原则:单一职责原则 英文名称是Single Responsibility Principle,简称SRP开闭原则 英文全称是Open Close Principle,简称OCP里氏替换原则 英文全称是Liskov Substitution Principle,简称LSP依赖倒置原则 英文全称是Dependence Inversion原创 2016-08-02 17:58:30 · 1509 阅读 · 0 评论 -
你真的会写Java单例么?
java中单例模式是一种常见的设计模式,单例模式分三种:懒汉式单例、饿汉式单例、登记式单例三种。 单例模式有一下特点: 1、单例类只能有一个实例。 2、单例类必须自己自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。 单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显原创 2016-08-04 20:28:20 · 2671 阅读 · 0 评论 -
Android 自定义View
Android 开发必然会面对自定义View, 因为许多时候android sdk里现有的View 并不能满足我们项目的需求。很多的Android入门程序猿来说对于Android自定义View,可能都是比较恐惧的,但是这又是高手进阶的必经之路。这里老鸟抛砖引玉一下,总结下自定义View的步骤:1、自定义View的属性2、在View的构造方法中获得我们自定义的属性3、重写原创 2016-08-15 21:17:49 · 2504 阅读 · 0 评论 -
Handler,looper,MessageQueue及 handlerThread 之间的关联和用法
Handler 是什么?这个是android面试官最喜欢问的问题,用脚趾都能回答出来,Handler可用于android多线程通信,可以用来更新UI的,用来发送message,处理message的。于是在很多地方我们都直接new 一个Handler 来使用,那么问题来了,如果你在一个自定义线程中new一个Handler,这个Handler能用么?能 or 不能。 Why?呵呵,现在老鸟带你揭开原创 2016-07-20 16:07:42 · 705 阅读 · 0 评论 -
面向对象六大原则----里氏替换原则,依赖倒置原则
Java 中面向对象编程六大原则:单一职责原则 英文名称是Single Responsibility Principle,简称SRP开闭原则 英文全称是Open Close Principle,简称OCP里氏替换原则 英文全称是Liskov Substitution Principle,简称LSP依赖倒置原则 英文全称是Dependence Inversion原创 2016-07-29 17:05:45 · 5140 阅读 · 0 评论 -
android apk 编译打包解析
Android 编译打包过程图如下一般会经过以下几个步骤:1.用aapt命令生成R.java文件2.用aidl命令生成相应java文件3.用javac命令编译java源文件生成class文件4.用dx.bat将class文件转换成classes.dex文件5.用aapt命令生成资源包文件resources.ap_原创 2016-06-23 14:03:49 · 619 阅读 · 0 评论 -
JavaScript学习笔记(一)
一个完整的 JavaScript 实现是由以下 3 个不同部分组成的: 核心(ECMAScript) : 描述了JavaScript 的语法和基本对象; 文档对象模型(DOM):描述了处理网页内容的方法和接口; 浏览器对象模型(BOM):描述了与浏览器进行交互的方法和接口。ECMAScript 语法JavaScript 对大小写是敏感的变量变量是存储信息的容器。变量是弱类型的,使用 va原创 2016-11-07 13:11:06 · 1090 阅读 · 0 评论 -
Java Annotation 简析(二)
在上一篇文章解析了java Annotation的概念和基本用法,再简单回顾下注解的作用: a.生成文档。这是最常见的,也是java 最早提供的注解。常用的有@see @param @return 等 b. 标记,用于告诉编译器一些信息,比如 @Override等, c. 编译时动态处理,如动态生成代码 d. 运行时动态处理,如得到注解信息上篇文章演示了处理运行时动态处理注解,这篇文件讲解注原创 2016-10-04 23:16:11 · 1724 阅读 · 0 评论 -
EasyEmoji
最近由于公司项目需要,开发一个类似微信表情框,于是花了好些时间整出一个emoji框架,实现最简洁的方式增加一个功能又超强大的表情框架,并且分享出来,供大家使用,在使用中一起改进完善。让App添加表情最简单,最快速,并且无需更改原有activity布局。 照例先上图:可自由扩展面板功能:可自由扩展emoji表情功能:DownloadGradle:Step 1. Add the JitPack rep原创 2017-04-07 00:23:08 · 865 阅读 · 0 评论 -
如何设计实现一个LRU Cache?
1. 什么是LRU Cache?在LeetCode上看到一个LRU Cache实现的题目,题目描述是这样的: Design and implement a data structure for Least Recently Used (LRU) cache. It should support the following operations: get and set. get(key)原创 2017-02-19 21:16:03 · 1577 阅读 · 0 评论 -
android 面试题一
一Android ANR异常及解决方法原创 2014-10-23 21:02:20 · 602 阅读 · 0 评论 -
android 面试题二
一、在多线程编程这块,我们经常要使用Handler,Thread和Runnable这三个类,那么他们之间的关系你是否弄清楚了呢?答:1. 为什么要用多线程这里列出几个原因:a) 提高用户体验或者避免ANR在事件处理代码中需要使用多线程,否则会出现ANR(Application is not responding),或者因为响应较慢导致用户体验很差。b)异步应用中有些原创 2014-12-02 09:50:56 · 643 阅读 · 0 评论 -
Android HTTP和HTTPS那点事
先看看网络OSI(Open System Interconnect)模型: CA证书是什么?CA(Certificate Authority)是负责管理和签发证书的第三方权威机构,是所有行业和公众都信任的、认可的。 CA证书,就是CA颁发的证书,可用于验证网站是否可信(针对HTTPS)、验证某文件是否可信(是否被篡改)等,也可以用一个证书来证明另一个证书是真实可信,最顶级的证书称为根证书。除原创 2016-12-31 23:09:13 · 6152 阅读 · 0 评论 -
Javascript Promise让代码更优雅
回调函数真正的问题在于他剥夺了我们使用 return 和 throw 这些关键字的能力。而 Promise 很好地解决了这一切。在异步编程中,我们经常需要使用回调函数,过多层级的回调会使本来简洁的代码变得深奥隐晦难明,使用promise能完美解决回调嵌套问题,让代码赏心悦目,还能实现更多强大的功能,比如现实网络编程中的同步功能等。javascript里的promise功能和使用都比较类似于java原创 2016-12-18 20:31:00 · 2771 阅读 · 0 评论 -
Android 面试题四
一. 对象锁和类锁是否会互相影响?对象锁:Java的所有对象都含有1个互斥锁,这个锁由JVM自动获取和释放。线程进入synchronized方法的时候获取该对象的锁,当然如果已经有线程获取了这个对象的锁,那么当前线程会等待;synchronized方法正常返回或者抛异常而终止,JVM会自动释放对象锁。这里也体现了用synchronized来加锁的1个好处,方法抛异常的时候,锁仍然可以由JVM来自动释原创 2017-01-02 18:31:42 · 700 阅读 · 0 评论 -
android 面试题三
一. 静态内部类、内部类、匿名内部类,为什么内部类会持有外部类的引用?持有的引用是this?还是其它?静态内部类:使用static修饰的内部类 内部类:就是在某个类的内部又定义了一个类,内部类所嵌入的类称为外部类 匿名内部类:使用new生成的内部类 因为内部类的产生依赖于外部类,持有的引用是: 类名.this二. ArrayList和Vector的主要区别是什么?1)ArrayList和Vec原创 2017-01-02 16:01:31 · 945 阅读 · 0 评论 -
android进程间通信
由于android系统中应用程序之间不能共享内存。因此,在不同应用程序之间交互数据(跨进程通讯IPC(Inter-Process Communication))就稍微麻烦一些。在Linux系统进程间通信方式:(1)传统机制。如管道(Pipe)、信号(Signal)和跟踪(Trace),适用于父子进程或兄弟进程,其中命名管道(Named Pipe),支持多种类型进程(2)System V IPC机制。原创 2016-12-02 16:58:14 · 726 阅读 · 0 评论 -
Java设计模式之观察者模式
观察者模式是对象的行为模式,又叫发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。 观察者模式的结构一原创 2016-11-20 10:19:07 · 913 阅读 · 0 评论 -
android触摸event传递源码分析二
上一篇文章分析了input event怎么传递到activity中,下面接着分析在activity中的具体传递,也是event事件传递最重要的地方。接上回,先看看activity中收到event后:public boolean dispatchTouchEvent(MotionEvent ev) { if (ev.getAction() == MotionEvent.ACTION_DOWN)原创 2016-11-12 17:17:57 · 700 阅读 · 0 评论 -
一个Android app好的构架
一个好的开发框架,就像一个艺术品,这里给大家推荐一个 android 的框架,使用 Rxjava + retrofit + dagger2 + mvp,结合了当下比较流行的框架,项目层次非常清晰,易于扩展和维护。框架结构图与常规的 MVP 不同的是,在 modle 层和 view 层通过EventBus 连接,当数据发生变化时,发出对应的 event,注册了这个 event 的 view会采取对应的原创 2016-10-31 10:51:01 · 2159 阅读 · 0 评论 -
Java设计模式之---装饰者模式
装饰者模式装饰者模式(Decorator Pattern)也称为包装模式(Wrapper Pattern),结构型设计模式之一。动态将职责附加到对象上,若要扩展功能,装饰者提供了比继承更具弹性的代替方案。意图:动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。设计原则:多用组合,少用继承。 利用继承设计子类的行为,是在编译时静态决定的,而且所有的子类原创 2016-10-20 14:29:59 · 788 阅读 · 0 评论 -
Javascript学习笔记二
JavaScript 对象JavaScript 中的所有事物都是对象:字符串、数字、数组、日期,等等。对象是拥有属性和方法的数据。创建新对象有两种不同的方法: 1. 定义并创建对象的实例 2. 使用函数来定义对象,然后创建新的对象实例创建直接的实例本例创建名为 “person” 的对象,并为其添加了四个属性:person=new Object();person.firstname="Bil原创 2016-11-09 16:06:10 · 966 阅读 · 0 评论 -
Android中触摸事件MotionEvent的来源
MotionEvent的来源在activity中我们经常需要处理触摸事件,要了解android触摸事件event的传递是比较复杂的,今天先看看activity中触摸事件的来源。 首先看Activity的实现,如下,Activity实现了一个特殊的接口:Window.Callback。public class Activity extends ContextThemeWrapper原创 2016-10-18 16:11:50 · 3272 阅读 · 0 评论 -
Android EventBus 3.0 使用及源码解析一
在编程过程中,当我们想通知其他组件某些事情发生时,我们通常使用观察者模式,在android中我们可以使用eventbus来实现类似的需求,EventBus是一个Android事件发布/订阅框架,通过解耦发布者和订阅者简化 Android 事件传递。它使用简单,并将事件发布和订阅充分解耦,从而使代码更简洁。一、EventBus使用1,首先android studio项目的原创 2016-07-18 16:07:57 · 487 阅读 · 0 评论 -
面向对象六大原则----开闭原则
Java 中面向对象编程六大原则:单一职责原则 英文名称是Single Responsibility Principle,简称SRP开闭原则 英文全称是Open Close Principle,简称OCP里氏替换原则 英文全称是Liskov Substitution Principle,简称LSP依赖倒置原则 英文全称是Dependence Inversion原创 2016-07-27 17:59:31 · 7175 阅读 · 0 评论 -
android的Camera和Matrix
android提供了Matrix类用于对图像进行移动缩放旋转等等操作。看似有点麻烦复杂,还有pre、pro等的区别,其实掌握了线性代数的Matrix基础知识后,就会发现真是so easy。那下面跟随本帖来场矩阵革命吧。从最基本的开始,将点P(x,y) x轴移动a个单位,y轴移动b个单位到(x',y')处,会移动吧,无非就是x'=x+a;y'=y+b;用矩阵表示如下x' | 1原创 2015-03-12 17:42:18 · 692 阅读 · 0 评论 -
Android开发当中Parcelable,Serializable接口的使用
Activity之间传数据时,为了避免麻烦,往往会将一些值封装成对象,然后将整个对象传递过去。对于Android来说传递复杂类型,主要是将自己的类转换为基础的字节数组,Activity之间传递数据是通过Intent实现的。Android序列化对象主要有两种方法,实现Serializable接口、或者实现Parcelable接口。实现Serializable接口是Java SE本转载 2015-03-09 14:35:00 · 1158 阅读 · 0 评论 -
eclipse 快捷键
1. ctrl+o:快速outline 快速地位到当前类中的方法 如果想要查看当前类的方法或某个特定方法,但又不想把代码拉上拉下,也不想使用查找功能的话,就用ctrl+o吧。它可以列出当前类中的所有方法及属性,你只需输入你想要查询的方法名,点击enter就能够直接跳转至你想去的位置。2. ctrl+e:快速转换编辑器 打开已打开的文件浏览窗口原创 2015-03-12 10:38:20 · 763 阅读 · 0 评论 -
Android activity的setResult()在什么时候调用?
如果一个activity要返回数据到启动它的那个activity,可以调用setResult()方法。那什么时候去调用setResult()方法返回数据呢?看一下源码就明白了:public final void setResult(int resultCode, Intent data) { synchronized (this) { mResultCo原创 2015-03-27 19:36:40 · 2448 阅读 · 0 评论 -
android 串口jni 开发流程
JNI原创 2014-11-12 17:17:06 · 1957 阅读 · 1 评论