Android
文章平均质量分 73
fastsy
这个作者很懒,什么都没留下…
展开
-
Handler机制
Handler负责将消息Message发送到消息队列MessageQueue中MessageQueue通过enqueueMessage()方法将消息Message加入消息队列中Looper负责将消息Message从消息队列MessageQueue中取出。原创 2022-10-17 19:26:06 · 431 阅读 · 1 评论 -
一步一步带你了解Hybrid开发框架之DsBridge
Hybrid开发即 原生与前端的混合开发,常指原生+H5的混合开发。在此之前,我们来梳理下,原生与H5交互的最原始做法(这里基于android)。android与js交互android与js交互的核心思想是通过向页面注入javascript代码间接调用H5脚本中定义的方法。WebView为我们提供了两种注入方式,一种有回调,一种无回调。SDK<19,android提供的无回调方法:l...原创 2019-10-26 17:55:34 · 2843 阅读 · 1 评论 -
内存泄漏分析之-内存分析工具的使用
知道了内存泄漏的种种原因后,我们想知道程序是否发生了内存泄露,并定位到内存泄露的具体位置应该怎么做呢?1.查看GC日志判断是否发生内存泄露程序每进行一次GC操作,Logcat中就会输出一次GC日志。日志格式如下: <GC_name>: <GC_Reason> <Amount_freed>, <Heap_stats>, <Pause_time>GC_name :运行环境,android4.4之前原创 2017-11-30 16:20:08 · 434 阅读 · 0 评论 -
组件化爬坑---组件间解耦之ServiceLoader
1.ServiceLoader定义ServiceLoader是Java API中服务提供者的加载设施,这里的服务是熟知的接口和类(通常是抽象类)的集合,服务提供者是服务的特定实现,提供者中的类实现接口,并子类化在服务本身中定义的子类。2.ServiceLoader作用在工程内或者跨工程通信,怎么说呢?直接看例子:Test01、Test02服务都实现了IMyServiceLoad...原创 2018-08-14 20:20:16 · 1633 阅读 · 0 评论 -
组件化爬坑---组件间解耦之ConentProvider
上篇文章介绍了Serviceloader在组件间数据传递的应用,这次我们来看看ContentProvider怎样应用在组件化开发中。我们知道,ContentProvider作为Android四大组件之一,常用来跨进程通信。只要我们设置ContentProvider的exported =true ,就可以对其他应用暴露自己的数据获取接口,利用这一特性,我们就可以将其利用在组件间的数据通信了。...原创 2018-08-21 20:10:17 · 654 阅读 · 0 评论 -
组件化爬坑---组件间解耦之ARouter获取Service
上一篇我们介绍了ContentProvider应用组件间通信,相信了解过组件化开发的同学肯定也知道阿里的Arouter框架,它是为组件间通信而生的。今天我们不说它如何实现Activity、Fragment跨组件跳转的,来说说它用于Service获取的应用,其中主要依靠ARouter中的Iprovider来实现的。如何实现?同样的,Module A、B都引用了lib_common组件,A...原创 2018-08-21 20:28:36 · 4747 阅读 · 0 评论 -
组件化爬坑---RxJava2+Retrofit2+Okhttp封装
在公司组件化开发中,让我很头疼的就是网络层的交互了,由于历史原因,我们的网络封装与业务耦合度很高,拆分起来比较头疼,没办法,既然要做组件化,只能耐着性子慢慢拆分。切入正题,我们的项目网络请求使用的是RxJava2+Retrofit2+Okhttp,为了将网络模块单独抽出来以适应三个端的调用,就得让网络层与业务层完全隔离。这里介绍我目前对网络层简单实用的封装,网络请求就一个类Httpclie...原创 2018-08-22 19:08:20 · 981 阅读 · 0 评论 -
Andrid内存优化之你必须知道的核心类LruCache
提到内存优化,就会想到内存缓存,而提到内存缓存就必须得提到android提供的Lru缓存方案,它的核心就是LruCache类,因此,从源码的角度去看看它的工作原理。在android3.1.x(API 12)之前,我们用到的是android.util包下的LruCache,在此之后,我们可以用android.support.v4.util包下的LruChache,其实这两个包下的LruCache代码一原创 2017-04-20 21:46:35 · 323 阅读 · 0 评论 -
自定义控件之onMeasure解析01
好吧,为何要写这个系列的文章呢,因为最近看了一些源码,很多源控件都是自定义控件,因此有必要重新对自定义控件进行系统的学习。知识点:自定义控件一般继承View,也可直接继承已有的控件。不管哪种情况,核心思想还是按照:onMeasure->onLayout->onDraw这个步骤来。1.onMeasure()@Override protected void onMeasure(in原创 2017-04-12 20:04:51 · 376 阅读 · 1 评论 -
初识EventBus
什么是EventBusEventBus出来已经很久了,由于各种原因,之前一直没用过它,身边总有人说它好用,于是开始了它的学习。 EventBus,即事件总线,由开源组织GreenRobot发布。它利用更少的代码,更加精简的方式去使得Activities, Fragments, Threads, Services等组件得以通信。 用一张图来描述它的工作方式: EventBus用法1.定义事件:p原创 2017-02-22 17:45:45 · 391 阅读 · 0 评论 -
MVP瘦身方案的可行性
MVP瘦身方案的可行性自google发布mvp架构demo以来,越来越多的人开始在项目中尝试使用mvp架构来搭建自己的项目。mvp的发布初衷也是为了将逻辑代码与UI分离,通过接口的方式互通,达到解耦的目的。但用着用着,我们会发现一个蛋疼的事实,因为mvp是通过接口的形式来互相通信,那么就无法避免地要额外写多个接口。通常,一个Activity就对应着一个View、一个Presenter和一个...原创 2019-04-16 16:09:18 · 357 阅读 · 0 评论 -
组件化爬坑---ButterKnife的使用
想必大家都知道在组件化开发中如何使用ButterKnife,简单说明如下:1.在最外层的build.gradle中引入butterKnife插件:2.在对应的module下的build.gradle的dependencies中引入对应的butterknife:3.在library中使用控件绑定时,使用R2替代R:一切看起来貌似很正常,但我在组件化开发中却遇到了在libr...原创 2018-08-08 18:51:29 · 1987 阅读 · 1 评论 -
Android热修复技术选型——三大流派解析
Android热修复技术选型——三大流派解析转载 2017-12-05 11:57:06 · 228 阅读 · 0 评论 -
插件化开发之-gradle分包
插件化开发的由来android5.0之前,dalvik采用了一个short型数据来表示一个dex所含有的方法数个数,而short类型最大值为65535,因此方法数最大为65535.随着项目的不断增大,当项目中的方法数超过dalvik所能识别的最大方法数时,编译就会失败,为了解决这个问题,插件化开发就诞生了。何为分包?以下是没有进行分包的apk目录: 可以看到普通的apk目录中只含有一个clas原创 2017-12-05 10:21:44 · 723 阅读 · 0 评论 -
插件化开发之-Ant分包
之前我们写过关于gradle分包的文章,它依靠MultiDex实现,主要用于AndroidStudio开发。而Ant分包一般用于Eclipse开发,通过改写编译脚本命令实现分包。Ant分包实现步骤下载Ant,如果eclipse里面有集成的就忽略。通过Ant命令编译android工程,编译完成后会生成一个build.xml自定义一个custom_rules.xml文件,通过改写target命令,原创 2017-12-05 10:47:28 · 406 阅读 · 0 评论 -
Android内存泄露分析之-内存泄露的原因
首先我们要知道java运行时内存的分配策略,它们分别是:静态分配、栈式分配、堆式分配,而三种存储策略所对应的内存空间分别是:静态存储区(方法去)、栈区、堆区。静态存储区:主要存放static修饰的静态数据。这块内存在程序编译 时就已经分配好,并且在程序的整个运行期间都存在。栈区:主要存放方法体中的局部变量(包括基本数据类型、对象的引用),当所在的方法执行完毕后这些变量会释放所持有的内存。堆区原创 2017-11-24 23:09:19 · 350 阅读 · 0 评论