
android
文章平均质量分 76
chengyuan9160
记录android的学习历程~
展开
-
Dagger2使用详解
Dagger2使用详解什么是依赖注入?依赖注入就是将调用者依赖的对象实例通过一定的方式从外部传入,解决了各个类之间的耦合问题。这个外部,正是dagger2容器。需要什么对象从容器中取就行了,调用和被调用方被隔离开,通过一个容器将他们联系起来,从而实现了解耦。Dagger2是Google出的依赖注入框架。Dagger2的原理是在编译期生成相应的依赖注入代码。其他框架是在运行时期反射获取注解内容,影响运原创 2017-04-27 21:27:39 · 505 阅读 · 0 评论 -
RecyclerView源码解析之缓存机制
RecyclerView源码解析之缓存机制一、简介RecyclerView是谷歌官方出的一个用于大量数据展示的新控件,可以代替传统的ListView,更加强大和灵活。事实上,RecyclerView在性能上对比listView并没有显著的提示,RecyclerView更大的亮点在于提供了局部刷新的接口,通过局部刷新,就能避免调用许多无用的bindView。因此列表页需要支持动画...原创 2017-06-05 09:55:10 · 764 阅读 · 0 评论 -
java内存回收机制(笔记)
java内存回收机制(笔记)java整个GC的过程是虚拟机自动完成的,就是因为虚拟机把这部分工作都做掉了,导致我们对内存分配和回收了解的很少,所以有必要就深入的看下虚拟机是如何完成内存分配和回收的。主流的虚拟机包括JRockit、HotSpot及其他,在JDK7中,默认的虚拟机仍然是HotSpot,所以这里说的GC是指HotSpot的GC机制。一、内存区域划分1.程序计数器...原创 2017-06-05 09:58:41 · 402 阅读 · 0 评论 -
React Native 用法介绍
React Native 用法介绍一、简介React Native是Facebook的一个开源框架,RN提供了是一种更高效更低成本的开发方式,用RN开发的页面具有跨平台、易扩展、运行流畅并且支持动态更新等特点。通过一个例子来了解RN的基本用法,包括JS布局、页面跳转、网络请求等内容二、示例实现用户登录操作,输入用户名密码点击登录按钮跳转到用户资料页,点击返回可回到登录页...原创 2017-07-03 14:59:21 · 1353 阅读 · 0 评论 -
React Native 源码浅析
React Native 源码浅析1.RN是如何完成bundle文件加载的?2.Native和JS之间是如何通讯的?3.JS布局是怎么样被渲染到ReactRootView上的?下面通过对RN源码(版本:0.40.0)的分析,尝试找找这3个问题的答案~chengyuan-macpro:AwesomeProject chengyuan$ react-native -V0.40...原创 2017-07-05 21:31:18 · 597 阅读 · 0 评论 -
Android性能优化(上)
Android性能优化(上)一、布局优化1)卡顿Android系统每隔16ms发出VSYNC信号,触发对UI进行渲染,如果每次渲染都成功,这样就能够达到流畅的画面所需要的60fps,为了能够实现60fps,这意味着程序的大多数操作都必须在16ms内完成。因为你的layout太过复杂,无法在16ms内完成渲染,有可能是因为你的UI上有层叠太多的绘制单元,还有可能是因为...原创 2017-08-21 19:09:39 · 268 阅读 · 0 评论 -
VasSonic之流式拦截
VasSonic之流式拦截VasSonic框架用到了流式拦截和增量更新技术,下面只简单介绍流式拦截,详细参考:https://github.com/Tencent/VasSonic/wiki 一)传统H5页面打开缓慢的原因?1.打开一个H5页面首先需要初始化WebView内核和渲染组件(冷启动耗时200~500ms,冷启动过程中网络处于空等状态) 2.完成初始化后,WebView在...原创 2018-01-22 20:18:58 · 767 阅读 · 0 评论 -
React Native Component 生命周期
React Native Component 生命周期简介就像 Android 开发中的 View 一样,React Native(RN) 中的组件也有生命周期(Lifecycle)。所谓生命周期,就是一个对象从开始生成到最后消亡所经历的状态。RN 组件的生命周期整理如下图:Default Porps在自定义Component中,可通过defaultProps指定默认的...原创 2018-02-11 18:48:51 · 291 阅读 · 0 评论 -
React Native Redux 用法介绍
React Native Redux 用法介绍简介简单来说,redux 就是统一帮我们管理了 react 组件的 state 状态。redux适用于多交互,多数据源,复杂程度高的工程中。也就是当你感觉state状态已经复杂到没办法维护的时候,可以考虑redux。工作原理图: Action:它的作用就是将我们更新组件的状态 ( state ) 的每个动作抽象为一个行为,它有一原创 2018-02-06 17:36:06 · 293 阅读 · 0 评论 -
Ffmpeg常用命令
Ffmpeg常用命令常用参数:-i 输入流 -ss 起始时间 -t 持续时间 -f 输出格式 -b 设置码率,默认为200Kbit/s -r 设置帧率,默认25 -s 设定画面宽高 -aspect 设定画面比例 -vcodec 视频编码器 -vn 不处理视频 -ar 设定采样率 -ac 设定声音频道数 -acodec 音频编码器 -an 不处理音频视频格式转...转载 2018-09-06 15:18:24 · 351 阅读 · 0 评论 -
如何使用AbstractProcessor在编译时生成代码
如何使用AbstractProcessor在编译时生成代码在现阶段的Android开发中,注解越来越流行起来,比如ButterKnife,Retrofit,Dragger,EventBus等等都选择使用注解来配置。按照处理时期,注解又分为两种类型,一种是运行时注解,另一种是编译时注解,运行时注解由于性能问题被一些人所诟病。编译时注解的核心依赖APT(Annotation Processing T...转载 2018-12-27 16:49:09 · 2785 阅读 · 1 评论 -
AccessibilityService用法
AccessibilityService用法<?xml version="1.0" encoding="utf-8"?><accessibility-service xmlns:android="http://schemas.android.com/apk/res/android" android:descript原创 2018-12-12 10:51:33 · 1702 阅读 · 0 评论 -
android内存分析工具MAT的使用
android内存分析工具MAT的使用当遇到OutOfMemory问题的时候,怎么样通过MAT来定位和分析问题呢?先看个例子:public class MemoryLeakActivity extends AppCompatActivity{ @Override protected void onCreate(@Nullable Bundle savedInstanceState)...原创 2017-04-14 15:19:24 · 635 阅读 · 0 评论 -
Design pattern--单例模式
Design pattern–单例模式1)懒汉式,线程不安全public class Singleton { private static Singleton instance; private Singleton (){} public static Singleton getInstance() { if (instance == null)原创 2018-01-23 14:45:14 · 179 阅读 · 0 评论 -
GradientTextView
GradientTextViewGradientTextView是一个自定义文本控件,支持文字颜色渐变;一、效果展示支持水平和竖直两个方向渐变,效果如下: 二、实现1.布局<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"原创 2017-08-29 14:44:02 · 919 阅读 · 0 评论 -
Design pattern--观察者模式
RxJava全面解析RxJava采用观察者模式实现的,所以有必要先了解下观察者模式什么是观察者模式观察者模式:是对象的行为模式,又叫发布-订阅(Publish-Subscribe)模式,模型-视图(Model-View)模式或源-监听(Source-Listener)模式。观察者模式定义一种一对多的依赖关系,让多个观察者同时监听一个主题对象,这个主题对象在状态发生变化时,会通知所有原创 2017-04-29 10:16:47 · 380 阅读 · 0 评论 -
RxJava2使用详解
RxJava2之基本使用学习RxJava2之前需要了解下观察者模式,参考上一篇博客 RxJava2之观察者模式RxJava2是什么一个在Java VM上使用可观测的序列来组成异步的基于事件的程序的库 官网:https://github.com/ReactiveX/RxJavaObserver/Subscriber观察者Observable被观察者(主题Subject)Subscribe订阅主题(原创 2017-04-30 15:10:41 · 1133 阅读 · 0 评论 -
OKHttp3用法介绍
OKHttp3用法介绍我们把用http协议通讯的双方称作Client和Server,Client发送request请求,Server收到请求后处理并返回Client一个response.接口简介接口地址 http://10.4.44.24:8080/DemoApi/login?name=rico&pwd=123456接口结构 - scheme:http - ip: 1原创 2017-05-08 15:19:52 · 557 阅读 · 0 评论 -
Design pattern--代理模式
Design pattern–代理模式代理模式是常用的设计模式之一,在retrofit2源码分析过程中,看到了动态代理的使用,非常精妙,有必要深入理解下。代理模式有两种,静态代理和动态代理。静态代理代理(Proxy)是一种设计模式,即通过代理对象访问目标对象,好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.看一个例子// Subject.javapublic inte原创 2017-06-03 16:25:05 · 394 阅读 · 0 评论 -
Retrofit2源码分析
Retrofit2源码分析Retrofit是一个基于okhttp的网络请求工具,和google的volley相似,但是更加简洁,可以简洁到调用一个Java方法的方式去请求一个api.一、如何使用?通过一个登录接口来看下retrofit是如何使用的,首先配置app级别的gradle依赖,这里涉及json数据转换,所以需要添加适配:converter-gson。这也是rxjava非常灵活的地方,并且可以原创 2017-05-25 11:45:12 · 529 阅读 · 0 评论 -
java反射的用法
java反射什么是反射机制简单的来说,反射机制指的是程序在运行时能够获取自身的信息。在java中,只要给定类的名字,那么就可以通过反射机制来获得类的所有信息。基本用法// Person.javapublic class Person { private String name; private int age; public Person() { } public Person(S原创 2017-06-04 16:30:51 · 520 阅读 · 0 评论 -
Android多进程模式
Android多进程模式深入理解下android多进程模式,为后续进程间通讯做个铺垫~进程可以理解为一个应用,一个进程可以只有一个线程,即主线程,android中称为UI线程,在UI线程中才能操作view控件;通过给四大组件指定android:process可以轻松启动一个新的进程,看似简单却隐藏了不少问题 ~一、开启多进程在android中使用多进程只有一种方法,那就是给四大组件(Activit原创 2017-07-22 22:11:51 · 493 阅读 · 0 评论 -
Android Binder通讯机制
Android Binder通讯机制一、概念从IPC的角度来说,Binder是android中一种跨进程的通讯方式,Binder可以理解为一种虚拟的物理设备,它的设备驱动是dev/binder; 从Android FrameWork角度来说,Binder是ServiceManager连接各种Manager(ActivityManager、WindowManager,等)和相应ManagerServ原创 2017-07-22 22:16:07 · 455 阅读 · 0 评论 -
Android AIDL用法介绍
Android AIDL用法介绍待续~原创 2017-07-23 15:37:32 · 531 阅读 · 0 评论 -
Android性能优化(下)
Android性能优化(下)1)Bitmap解码格式 随着解码占用内存大小的降低,清晰度也会有损失。我们需要针对不同的应用场景做不同的处理,大图和小图可以采用不同的解码率。在Android里面可以通过下面的代码来设置解码率: 图片缩放 在保证图像清晰的情况下,可适当缩放,减少内存占用方式一: 方式二: 通常的做法是先设置inJustDecodeBounds等于true,获取到原图的大小后,原创 2017-08-22 16:14:20 · 322 阅读 · 0 评论 -
Android性能优化(中)
android性能优化(中)1)ArrayMapsHashMap好用,但却很占内存,简要原理如下:官方推荐使用ArrayMap或SparseArray代替:ArrayMap工作原理: 当你想获取某个value的时候,ArrayMap会计算输入key转换过后的hash值,然后对hash数组使用二分查找法寻找到对应的index,然后我们可以通过这个index在另外一个数组中直接访问到需要的键值对。如果原创 2017-08-22 11:59:31 · 292 阅读 · 0 评论 -
android annotation
元注解元注解是可以注解到注解上的注解,或者说元注解是一种基本注解,它能够应用到其它的注解上面。元注解有@Retention、@Documented、@Target、@Inherited、@Repeatable五种。@Retention用于解释注解的的存活时间RetentionPolicy.SOURCE注解只在源码阶段保留,在编译器进行编译时它将被丢弃忽视RetentionPolicy...转载 2019-04-15 11:49:08 · 195 阅读 · 0 评论