Android
文章平均质量分 90
迪迪迪迪迪
这个作者很懒,什么都没留下…
展开
-
稳定性优化 - 容灾方案 - 安全模式实现
看了这篇 jsonchao 的这篇神文 深入探索Android稳定性优化 很是佩服。里面有讲到了容灾方案建设,总结了4条。分别是功能开关统跳中心动态修复安全模式功能开关想实现功能开关,App一般需要有长连接的能力,或者写个轮询替代。公司也要建设相应的参数配置平台。这样就可以实现定时更新参数配置的能。开发某个重要功能、改动范围很大的业务的时候,都需要加上一个开关。开关默认是打开了(获取不到就使用默认值true),默认会走新功能的代码。如果遇到新功能有异常,在参数平台配置紧急配置新功能原创 2021-07-14 22:26:39 · 409 阅读 · 0 评论 -
Android 关于过度绘制的那些事儿 UI流畅度优化
检测方法1.开发者选项 - 调试过度绘制1.原色 – 没有被过度绘制 – 这部分的像素点只在屏幕上绘制了一次。2.蓝色 – 1次过度绘制– 这部分的像素点只在屏幕上绘制了两次。3.绿色 – 2次过度绘制 – 这部分的像素点只在屏幕上绘制了三次。4.粉色 – 3次过度绘制 – 这部分的像素点只在屏幕上绘制了四次。5.红色 – 4次过度绘制 – 这部分的像素点只在屏幕上绘制了五次...原创 2019-04-29 02:58:20 · 991 阅读 · 0 评论 -
Android 组件化 重构 笔记
上篇文章 Android 组件化 之 如何优雅的实现同级组件的通信 讲到组件化的3条好处一个工程(project)里面需要选择依赖哪几个组件,然后打成不同的包。由第一条引申,如果有需求「每个组件可以单独打个包来测试」。加快了编译速度。注意第一条「打成不同的包」是很广义的,除了打不同包,还有比如有一些base组件,能自己项目里用,还能打出一个独立的aar供其他项目用,也算作打成不同的包。组件化的牺牲很多文章说组件化可以 解耦、业务分层、业务隔离、代码变的更好维护,这些其实都是可以通过分包(P原创 2021-02-19 04:48:17 · 2478 阅读 · 3 评论 -
Android kotlin 使用协程配合Retrofit进行网络请求
Project build.gradleapply from: "config.gradle"buildscript { ext.kotlin_version = '1.3.61' repositories { jcenter() google() } dependencies { classpath 'com.andro...原创 2019-12-22 16:33:59 · 3329 阅读 · 0 评论 -
Android 组件化 之 如何优雅的实现同级组件的通信
Android 关于如何实现组件化的文章很多,涉及的内容也很广。如何实现引入库的统一,如何单module编译,如何做好业务拆分和解耦。本篇主要想在实现组件通讯方面探讨实现方案。——————————————————————————————前言google了一下,虽然限定时间2014年搜关键字「Android 组件化」也能搜出结果,但是「Android 组件化」文章的爆发期是从2015、2016年开始的。组件化也有很多种分法,目前流行的其中一种做法,会是这么分的。底层:一般是一个 lib_b.原创 2020-12-04 18:16:46 · 1988 阅读 · 4 评论 -
Android LiveData我的理解
LiveData用大众语言来来讲,是一个观察者,也是一个数据持有类或者可以称为一个数据的包裹类。它有别于其他的观察者的重点是,他具有生命周期感知能力,这里生命周期指的是activities, fragments, or services 的生命周期。讲到LiveData,就想到DataBinding,想到MVVM。LiveData的确一开始是为这种模式而设计出来的。LiveData搞懂,可以说...原创 2019-07-28 03:30:06 · 6459 阅读 · 1 评论 -
并发任务执行的几种方法 (同时上传多张图片请求)
业务需求有个业务需求是这样的。需要上传多张1~5张图片,使用一个专门的上传图片的网址。使用这个网址上传一个图片后会返回一个图片服务器地址。多张图片上传后可以获取多个服务器地址,再把这些图片地址加上一些其他参数,发起一个业务请求。这应该算一个很常见的产品需求。一开始我想着怎么没有可以上传多个图片的接口,后面想一次性上多个,弱网环境下,或者总上传文件体积太大。一个文件上传失败其他文件也都失败了。所以一次性只能上传一个也有好处的。照片实体类public class UploadImageItem {原创 2020-07-05 01:30:26 · 1751 阅读 · 0 评论 -
关于Android 抓包 与 反抓包
现象与原因Android 对于 Http 和 Https 两类网络请求Http因为没有加密,属于明文传输,是可以抓包的。但是从 Android 9.0 开始,默认是禁止 App 使用 Http 这种使用所有未加密的连接,使用 Http 会导致程序报错。java.net.UnknownServiceException: CLEARTEXT communication但还是可以通过配置一段代码(下面有讲),让系统允许继续使用 Http 协议。可以认为 Android9.0 以后不推荐使用 Ht原创 2020-06-07 11:54:36 · 7055 阅读 · 5 评论 -
Charles 的 调试 & Mock 数据技巧
Charles 拥有 Map 、Rewriter、Breakpoint 3大调试技巧,非常值得客户端开发学习一波。Charles 的 Map Local 功能(将网络请求重定向到本地文件)在charles「Tools -> Map Local」勾选 Enable Map Local,点击 Add 添加一个规则填写对应匹配规则,然后指向本地一个文件路径,点击OK。命中规则后,...原创 2020-03-31 22:22:25 · 1954 阅读 · 0 评论 -
EventBus 原理简析
基于eventbus:3.1.1 分析。一.注解写法关键字是@Subscribe后面括号内可选参数是,threadMode表示可以选择切换到哪个线程。sticky是否粘性事件,priority表示优先级。ThreadMode: POSTING 表示发送事件的线程,当前线程。ThreadMode: MAIN 表示UI线程ThreadMode: MAIN_ORD...原创 2018-09-02 17:41:10 · 1199 阅读 · 0 评论 -
Android 应用界面绘制流程
上一篇文章《Android 应用界面显示流程》讲到,从Activity.setContentView(int)方法,把布局文件某xml交给了PhoneWindow,PhoneWindow把布局inflate出来附在了DecorView里,然后交给了WMS管理,WMS和AMS调度后最终把画面显示出来。这篇文章讲ViewRootImpl.performTraversals(),是如何把DecorV...原创 2018-03-04 22:15:56 · 3185 阅读 · 0 评论 -
Android 应用界面显示流程
Android最重要的两个模块(个人认为),线程和UI。线程我之前写了一篇博客了,感觉还算满意。AsyncTask源码解析 从AsyncTask讲到线程池至于UI,趁最近有空,必须得好好整理一下脑子里各种零碎的知识点+再学习学习,整理出几篇博客才行。初探Window相信大部分学习Android第一个学到的都是Activity,如果没有研究一下,很容易会理解成Activity就...原创 2018-02-19 03:17:52 · 4736 阅读 · 0 评论 -
阿里IoT使用总结
首先得感慨下写个App比之前真的简单方便多了。需要推送功能直接考虑集成友盟、极光、个推、小米推送、华为推送。需要IM功能直接考虑集成环信、融云、网易云信、腾讯云通、阿里云川等这些解决方案。这些传统功能就不谈了,连这两年崛起的直播、娃娃机、答题业务,你都能找到好几家第三方解决方案,提供完整sdk直接集成。 物联网(英语:Internet of Things,缩写IoT)理论上...原创 2018-02-14 00:13:42 · 16614 阅读 · 2 评论 -
做一个简单的共享元素Activity跳转
安卓的共享元素动画是个很给力的存在.但是可能由于只能运行在5.0或以上的系统上,所以感觉普及率一直不高.ps.现在看到大部分共享元素动画,都是在rom内置app里看到的.很好理解,自己做的rom,当然能确定是5.0以上的.单个app开发就不是这回事了. 有些开发者会想做一些通用的库,以此想整合代码,让共享元素动画这方面的代码更加简单.但实际使用效果感觉一般.所以我也只能总结一下...原创 2017-09-03 23:18:42 · 916 阅读 · 0 评论 -
android 事件分发机制源码解析
首先我重新写了这了几个控件类,只是加了点打印日志,来观察里面的事件分发机制.然后写了个布局,如图.MainActivity有dispatchTouchEvent,onTouchEvent方法MyRelativieLayout有dispatchTouchEvent,onInterceptTouchEvent,onTouchEvent方法TextView和Button有...原创 2016-12-25 18:12:15 · 829 阅读 · 0 评论 -
StateTool 一种好用的"空页面 错误页面 等待页面 数据页面"切换工具
先上图 如图所示,页面主要有三个模块.空页面:表示联网成功,但是服务器没有数据可取的页面提示错误页面:表示网络等错误的页面提示.内容页面:就是我们正常流程显示的页面. 为了结构精简,你只需要引用一个类StateTool就行!!!!精简到没朋友.. 开始讲解StateTool package com.yao.statetool...原创 2016-12-20 00:08:37 · 734 阅读 · 0 评论 -
android binder机制 简析
学安卓Binder应该是必须了解的东西。花了几天时间阅读Google前3页的binder文章。其中主要阅读了Gityuan的Binder系列文章http://gityuan.com/2015/10/31/binder-prepare/很给力,一看还是我大小米的系统工程师,膜拜膜拜。Binder是什么?Binder是Android的一个类,继承IBinder接口...原创 2017-01-03 22:20:10 · 654 阅读 · 0 评论 -
android Activity启动过程 简析
概括先简略概括一下Activity的启动过程,以下拿点击Launcher来说。1.开始请求执行Activity,Launcher进程发送命令到AMSLauncher就是一个App,点击Launcher会隐式启动一个新的应用。所以跑的也是Activity.startActivity的流程。接着就是Activity.startActivityForResult() ——>...原创 2017-01-04 22:44:25 · 811 阅读 · 0 评论 -
AsyncTask源码解析 从AsyncTask讲到线程池
我觉得AsyncTask算是Android源码里面比较杰出的一个了.里面涉及的知识点很多,并且运用起来也很合理.在安卓里,使用后台线程,并且需要与主线程交互的方式,最直观的就是new Thread+Handler 和 AsyncTask..在new Thread+Hander后,安卓开拓大神又创建了AsyncTask.我觉得有两个理由.第一.不用关注创建线程,使用线程,管理线程的...原创 2017-02-01 17:46:47 · 703 阅读 · 0 评论 -
Handler还需要用到弱引用(WeakReference)吗?
网上很多文章都说写Hanlder,需要用static声明为静态的,还需要用弱引用包裹构造函数传来的Activity实例。比如这篇英文博客http://www.androiddesignpatterns.com/2013/01/inner-class-handler-memory-leak.html里面的Sample是这样写的public class SampleAct...原创 2017-02-09 15:47:24 · 4147 阅读 · 2 评论 -
一个好用的Setting开关(自定义组合控件)
1.在attrs.xml声明好控件属性,这里控件用到了3个文字类描述属性 <?xml version="1.0" encoding="utf-8"?><resources> <declare-styleable name="SettingSwitchCompat"> <attr name=&qu原创 2017-02-14 23:52:12 · 1182 阅读 · 0 评论 -
内存泄漏检测分析工具MAT(Memory Analyzer Tool)的使用
工具下载地址:https://www.eclipse.org/mat/ 首先准备一个案例demo。上次讲了经典Handler导致的内存泄漏,今天也讲个经典例子。单例造成的内存泄漏。public class MySingleton { private static volatile MySingleton instance; private Context...原创 2017-02-18 14:33:21 · 14634 阅读 · 0 评论 -
Android 耗时代码(ANR)的查找检测和分析解决 TraceView的使用手册
关于ANR:Application Not Response,意思是应用未能及时响应。ANR有三种发生情况前两者定义在ActivityManagerService.java里面屏幕或按键点击后5秒内无响应// How long we wait until we timeout on key dispatching.static final int KEY_DISPA...原创 2017-03-03 17:57:40 · 9737 阅读 · 1 评论 -
Android 注解的使用 xUtils3和ButterKnife控件的注解注入对比
Java注解的定义:java注解(Annotation),是JDK1.5开始加入的源代码的一种特殊语法元信息。可以用于标注Java语言中的类、方法、变量、参数和包,然后在编译或运行时进行解析和使用,起到说明,配置的功能。注解的功能位于java.lang.annotation包中。JDK里常见的有@Override、@Deprecated、@SuppressWarnings。...原创 2017-03-06 21:12:21 · 2644 阅读 · 0 评论 -
CoordinateLayout 自定义Behavior 仿百度外卖效果 实践
高仿百度外卖效果代码地址:https://github.com/yaodiwei/CoordinatorLayoutTester 真百度外卖效果 自定义Behavior一半分为两种类型一种是重写layoutDependsOn和onDependentViewChanged。然后根据dependency控件的大小或位置的改变,来使自己的控件改变。一种是重写on...原创 2017-04-27 01:20:52 · 2841 阅读 · 0 评论 -
关于RecyclerView的ItemDecoration
之前用 ItemDecoration 一直都是用的源码里唯一附带的 DividerItemDecoration。 或者直接在每个Item里写分割线代码了。一直没怎么管 ItemDecoration。这段时间因为需要用到所以学习了下用法。这个类需要继承 RecyclerView。ItemDecoration。有3种方法可以重写getItemOffsets 名字表示 item 的偏移,...原创 2017-05-31 23:23:11 · 581 阅读 · 0 评论 -
(2019年10月更新) Android 最全的底部导航栏实现方法
本文(争取做到)Android最全的底部导航栏实现方法.现在写了4个主要方法.官方方法. 官方的 BottomNavigationActivity使用Android studio 新建一个工程,可以选择到这个BottomNavigationActivity。或者在工程里新建BottomNavigationActivity会创建出这么几个文件,分别介绍一下。...原创 2016-06-06 11:08:15 · 60890 阅读 · 37 评论