Android学习笔记
左手木亽
长亭外,古道边,芳草碧连天~
展开
-
RecycleView从显示到下拉刷新和加载更多
RecycleView出来已经有一两个年头了最近在项目中完全替换掉了ListView很有必要的写一篇记录一下使用过程,以便以后温故而知新。RecycleView的使用场景开始到初始化RecycleView可以用于展示列表式、网格式、瀑布流式风格的界面而且使用方便,可以这么来讲任何ListView能做到的功能RecycleView它也能做到而且能轻松驾驭比ListView更加强大的功能原创 2016-08-06 21:00:21 · 1998 阅读 · 0 评论 -
注解(Annotation)从实例开始
Annotation(注解)是一个以@interface声明的一个接口,程序可以通过反射来获取指定程序元素的Annotion对象,然后通过Annotion对象来获取注解里面的元数据,要求JDK版本要1.5才有这个功能。Annotation使用起来跟普通的接口基本上相似,只是多了一个@符号。原创 2016-07-17 22:40:00 · 724 阅读 · 0 评论 -
RxJava中的Subject和常见的生命周期管理
首先,从下面这个对Subject类的定义中可以看出Subject既可以是Observer也可以是Observable。public abstract class Subject<T, R> extends Observable<R> implements Observer<T> 这种就非常适合于把数据先存入到Subject中,然后转成Observable这样就可以发射事件流了原创 2016-07-14 20:14:23 · 2811 阅读 · 0 评论 -
Retrofit结合RxJava的一次实践
公司的一个项目中已经采用了Retrofit加RxJava的作为网络请求框架,强大的框架所以替换了那么久决定记录一下我的实践过程。原创 2016-05-31 21:58:33 · 1574 阅读 · 0 评论 -
使用Gradle统一管理常用库和版本号
现在AndroidStudio已经是开发Android的主流IDE了,当然还有人在使用Eclipse特别是那些项目中使用自己开发的so文件的公司可能由于各种原因还没切换到AndroidStudio。在AS中常见的引用库我们是在我们项目的build.gradle进行引入常用库,并使用gradle来进行渠道打包等操作。原创 2016-03-14 22:19:25 · 5449 阅读 · 0 评论 -
使用RxJava实现的超简单事件总线RxBus
项目中加入了RxJava,所有很有必要把Eventbus给替换掉了,引用使用RxBus完全满足了需求了。而且RxBus实现起来超简单只需要几行代码就好了而且同一使用RxJava来取消绑定,我们可以忽视了Eventbus的unregister的过程,当然我们还是需要在界面结束的时候取消Observable间的订阅关系。原创 2016-03-23 22:21:32 · 2501 阅读 · 0 评论 -
Android高效网络请求Retrofit框架
Retrofit已经升级到2.0版本了,之前在项目中一直使用Volley作为网络请求框架那么为什么我们要考虑替换到Retrofit呢。原创 2016-03-11 22:22:19 · 1035 阅读 · 0 评论 -
基于RxJava实现的MVP实例
以前我们所谓的MVC架构通常我们会在Model跟View直接交互,而MVP中我们采用Presenter作为中间Model获得数据后传给Presenter然后Presenter将结果传递给View显示。原创 2016-02-25 20:08:29 · 932 阅读 · 0 评论 -
RxJava入门初体验
在RxJava的世界里,有四个主要的角色: Observable Observer Subscriber Subjects Observable和Subjects是两个”生产”实体,Observer和Subscriber是两个”消费”实体。原创 2016-02-24 21:17:17 · 634 阅读 · 0 评论 -
Android中线程池的最佳配置方法
提到线程池每一个开发者都知道其中的好处,我们不得不提线程池的好处: 1.重用线程池中线程,避免因为线程的初始化和销毁带来的性能开销 2.能有限控制线程池中的最大并发数,避免因为线程间互相抢占系统资源而导致的阻塞 3.能有效的并且简单的线程管理,并提供简单和建个轮询执行等功能原创 2016-02-22 22:04:08 · 1237 阅读 · 0 评论 -
ContentProvider应用组件实例记录
如果你公司开发了多款应用且应用间需要共享数据,如果你的应用中存在android:process=”:remote”这样的多进程的操作,是否还在忧愁如何传递数据这时候ContentProvider就可以派上用场了,贵为四大组件之一专门为不同应用不同进程共享数据使用。原创 2016-02-22 17:22:39 · 615 阅读 · 0 评论 -
封装一个Android数据库框架
在Android中为开发者提供了SQLiteDatabase这个类且这个类提供了insert、delete、update、query。在我们平时开发中由于不像Web开发需要丰富的数据库功能,所以这四个已经足够满足我们了。所以开源世界里就冒出了很多功能强大的数据库开源框架,可以像我的应用中功能其实只是一点点不是很有必要把这么一个大框架都塞进去,说不定得不偿失。所以我们开始自己封装一个通用的数据库框架。原创 2016-02-20 16:27:57 · 1381 阅读 · 0 评论 -
Android的IPC机制实现方式之Messenger
Messenger可以翻译成信使,通过它可以在不同进程间传递Message对象有了它就可以轻松实现进程间的数据传递了。Messenger使用的方法相对AIDL比较简单,它对AIDL做了一层封装是的我们不需要像采用AIDL那样去实现进程通信那么麻烦,可以看看他的源码有AIDL的迹象。原创 2016-03-06 00:25:38 · 1128 阅读 · 0 评论 -
Android-Universal-Image-loader源码解析
Android-Universal-Image-loader作为看一款老牌的图片下载库,整体代码清晰读起来比较简易可以用来学习图片下载的功能逻辑是一个不错的选择,所以我选择解读Android-Universal-Image-loader的源码。原创 2016-02-19 17:10:45 · 867 阅读 · 0 评论 -
Android中的Dalvik虚拟机的内存管理简单了解
Dalvik虚拟机的内存分为三种类型: Java Object Heap, Bitmap Memory, Native Heap. 下面,就这三种类型进行详细讲解:一. Java Object Heap: Java Object Heap是用来分配Java对象的,代码中new出来的Java对象都在Java Object Heap中。转载 2016-02-15 15:56:12 · 826 阅读 · 0 评论 -
Android中的Bitmap的高效加载介绍
如何高效的加载Bitmap呢?如果我们不注意这些,Bitmaps会迅速的消耗掉可用内存从而导致程序崩溃,出现下面的异常:java.lang.OutofMemoryError: bitmap size exceeds VM budget.在Android应用中加载Bitmaps的操作是需要特别小心处理的,有下面几个方面的原因:原创 2016-02-15 22:10:31 · 1665 阅读 · 0 评论 -
使用RxJava自己构造一个三级缓存的实例
通常我们说的三级缓存是指Memory,Disk,NetWork,因为我们都知道从网络读取一条数据往往存在各种因素速度不尽人意,如果一个应用中任何数据都是实时从网络获取,那么我们想象一下用户每次都要面对如进度条转个两三圈才显示数据这种体验肯定是不佳的,所以我们需要缓存数据,所以本文介绍使用RxJava通过实例来讲解如何缓存数据。原创 2016-08-20 17:08:59 · 1297 阅读 · 0 评论 -
在Android中使用正确的姿势写一个string.xml
首先,本文用于记录Android中琐碎的string.xml声明。翻译 2016-09-25 23:14:34 · 4611 阅读 · 0 评论 -
源码解析一次OKHttp请求的过程
OkHttp这个库有多优秀作为Androider大家心里都明白,应该说合格的开发者都认识它。那么,这里简单看个OKHttp的接口请求姿势:OkHttpClient okHttpClient = new OkHttpClient();Request request = new Request.Builder() .url("https://www.xxxx.com/xxx/xxx...原创 2018-10-22 16:11:38 · 379 阅读 · 0 评论 -
ReactNative源码分析之JS渲染成Android控件
经过了一番对ReactNative的学习之后,我们都知道只要敲入react-native run-android神奇的JS代码就被编译成Android可以理解的View了,不得不惊叹ReactNative隐藏的神秘的力量,所以本文分析一下一个Hello,World的JS代码是怎么变成Android控件的. 简单的看一下JS代码:render() { return (&amp;lt;View...原创 2018-08-12 18:00:37 · 1229 阅读 · 1 评论 -
Android开源库Retrofit中RxJava的工作流程分析
写这么一篇文章主要是为了解惑,我们都知道Retrofit可以配合RxJava一起使用,而且那种链式的调用简直了,但是一直有个疑惑:getObservable().subscribe(new Observer&lt;String&gt;() { @Override public void onNext(String value) { // ......原创 2018-07-06 15:58:44 · 364 阅读 · 0 评论 -
深入浅出Android中的App启动流程分析
App启动是指用户点击手机桌面的app对应的icon开始,所以我们需要明白几点基础知识: 1.桌面也是一个Activity叫Launcher.java 2.在桌面点击icon启动app跟在app内部启动另一个Activity是一样的都是调用startActivity方法平时通常我们都是直接调用startActivity从而忽略了Framework层中的实现原理是怎样的,当然我们不可能深入代...原创 2018-05-10 15:58:36 · 1040 阅读 · 0 评论 -
ReactNative跟Android原生模块是如何进行数据交互实例
引文:有时候App需要访问平台API,但React Native可能还没有相应的模块包装;或者你需要复用一些Java代码,而不是用Javascript重新实现一遍;又或者你需要实现某些高性能的、多线程的代码,譬如图片处理、数据库、或者各种高级扩展等等。 来自:https://reactnative.cn/docs/0.51/native-modules-android.html#con...原创 2018-03-06 18:11:31 · 1038 阅读 · 0 评论 -
Android源码分析Debug下ReactNative的bundle文件加载流程
本文主要分析在debug环境下Android是怎么加载到bundle文件的主要加载流程,不涉及太底层的代码均是Java代码分析。开始首先我们也在AndroidStudio中多多少少看过RN的源码,也知道它其实就是一个ReactRootView,而且是通过下面这段代码进行加载相对应的视图呈现我们要的UI效果:mReactRootView.startReactApplication(...原创 2018-03-14 22:10:37 · 1532 阅读 · 0 评论 -
RxJava中的线程调度源码解析
首先,异步请求或者读取数据是平时开发中很常见的一个功能,在数据获取成功之后需要显示到主线程的UI上的时候平时我们都是通过Handler进行转换。原创 2017-12-29 11:52:22 · 459 阅读 · 0 评论 -
RxJava中subscribe流程源码分析
接触RxJava算是比较早了,早期RxJava 1.0出来的时候就结合Retrofit然后搭配MVP框架使用了, 年初加入新公司也有用到RxJava不过中间比较长一段时间没有接触,准备彻底深入的学习一下。原创 2017-12-28 15:50:47 · 997 阅读 · 0 评论 -
Android中UI性能分析原理
涉及到UI性能问题我们需要直面的就是卡顿,为了让应用更加流畅我们不得不做一些监控,从而能及时修复卡顿现象还用户一个丝滑的体验。原创 2017-10-26 15:26:53 · 881 阅读 · 1 评论 -
ViewStub的实现深入解析
布局优化是性能优化中一项不可缺失的工作,而ViewStub是性能布局优化中很有必要的一项,使用ViewStub可以把类似空白页、错误页等不需要马上显示的View实现懒加载的效果,而且内存占有量非常的少,它是一个宽高为0、不执行draw方法且本身设置了View.GONE所以基本上不参与layout,非常适合用于做懒加载的布局优化。原创 2017-09-13 16:21:31 · 682 阅读 · 1 评论 -
Android中怎么计算apk的启动时间
本文来自 https://www.zhihu.com/question/35487841 这是一篇讨论怎么计算apk的启动时间…转载 2017-07-21 14:33:52 · 1075 阅读 · 0 评论 -
LeakCanary从入门到源码分析
“A small leak will sink a great ship.” - Benjamin Franklin 千里之堤, 毁于蚁穴。 – 《韩非子·喻老》 LeakCanary是什么?可以从LeakCanary的github很容易的得到定义: Android|Java的内存检测库 更多使用方法:https://www.liaohuqiu.net/cn/po原创 2017-07-13 18:58:02 · 3159 阅读 · 0 评论 -
Android中利用APT生成代码
APT已经不新鲜了,虽然我们都知道这是个什么东西: APT(Annotation Processing Tool 的简称),可以在代码编译期解析注解,并且生成新的 Java 文件。 但是为了能自己动手采用APT写一个框架那才能说是真的了解它、所以本文模仿butterknife自己写一个方便加深印象。原创 2017-06-18 00:49:36 · 1007 阅读 · 0 评论 -
采用APT&RxJava造一辆RxBus
首先感谢以下文章: APT:https://github.com/lizhaoxuan/Android-APT-Framework 反射:http://www.cnblogs.com/lzq198754/p/5780331.html 注解:http://www.cnblogs.com/linjiqin/archive/2011/02/16/1956426.html原创 2017-01-22 18:51:01 · 877 阅读 · 0 评论 -
Android中线程池的使用
本文来自:Amit Shekhar的一篇译文,地址 https://medium.freecodecamp.com/threadpoolexecutor-in-android-8e9d22330ee3#.c451hqaf2本文主要讲解线程池、线程池Executor在Android的使用,并且通过代码片段来覆盖这些主题。原创 2016-12-07 22:41:16 · 1245 阅读 · 0 评论 -
Android6.0权限管理到RxPermissions源码分析
在给应用适配6.0版本的时候,我们就需要运行时权限管理。在6.0开始有一套新的运行机制管理用于更友好的保护用户的隐私安全,一般涉及用户隐私的需要实时来提示用户通过允许和拒绝来授权。原创 2016-10-05 00:16:24 · 4803 阅读 · 0 评论 -
从热更新到Nuwa源码分析
参考文章: 安卓App热补丁动态修复技术介绍——by QQ空间终端开发团队 Android dex分包方案 Android热更新方案Robust 开源库: https://github.com/jasonross/Nuwa https://github.com/dodola/HotFix原创 2016-09-30 14:03:01 · 1317 阅读 · 0 评论 -
在Android使用AIDL实现IPC机制
之前在自己应用中把一个视频播放界面采取了多进程机制实现,这样的好处是当播放界面出现任何异常会把视频播放的那个进程强制关闭而不会影响到整个应用,从用户体验上来讲有很大的改善。我们采取的做法:android:process=":remote"这样能轻松实现多进程机制,可是由它带来的不可预见的问题也是接踵而来主要表现的就是两个进程间如何通信的问题,所以当时我采用的aidl实现两个进程间的通信问题。原创 2016-03-02 21:38:39 · 1096 阅读 · 0 评论 -
一个自己的图片下载库--NeacyImageLoader
最近一直在和LruCache、DisLruCache、Bitmap打交道,了解了很多知识点,所以总结了写了个图片下载库,可以更直观深刻的体会其中。想给取个优雅的名字想不起来所以就叫NeacyImageLoader体验地址:https://github.com/Neacy/NeacyImageLoader原创 2016-02-17 15:44:56 · 810 阅读 · 0 评论 -
Handler的正确写法
Handler我们常常用于通知主线程做相对应的操作,但是如果使用不但的话就会造成内存泄露,所以记录写正确的Handler写法。Handler handler = new Handler() { public void handleMessage(Message msg) { //do something }; };handler.se原创 2015-05-19 21:42:29 · 4145 阅读 · 0 评论 -
ImageView的selector效果
在平时开发中如Button我们给它加上selector分别呈现pressed以及normal效果能给我们的用户体验上大大增色不少,可是我们当我们是用ImageView来”当作”一个一个”Button”的时候发现直接设置selector却不起作用,当然此时我们的应用就表现的暗淡了。那我们就只能找到方法来解决这种情况。 首先定义一个selector文件:<selector xmlns:android=原创 2015-06-24 23:03:46 · 4521 阅读 · 0 评论 -
Android中List循环遍历性能对比
在android开发中只要是列表式风格界面我们几乎都需要用到List来存放数据,在数量很少的List的话几乎任何一种循环遍历方式整体性能都无差别,但是当我们遇到数据量稍大的时候有必要考虑用哪种方式写起来比较高性能。 常见的有以下三种: 第一种for (String s : tests) { // ....}第二种int size = tests.size();for (int i =原创 2015-06-23 22:22:48 · 5469 阅读 · 2 评论