自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 资源 (1)
  • 收藏
  • 关注

原创 关于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 6742 5

原创 稳定性优化 - 容灾方案 - 安全模式实现

看了这篇 jsonchao 的这篇神文 深入探索Android稳定性优化 很是佩服。里面有讲到了容灾方案建设,总结了4条。分别是功能开关统跳中心动态修复安全模式功能开关想实现功能开关,App一般需要有长连接的能力,或者写个轮询替代。公司也要建设相应的参数配置平台。这样就可以实现定时更新参数配置的能。开发某个重要功能、改动范围很大的业务的时候,都需要加上一个开关。开关默认是打开了(获取不到就使用默认值true),默认会走新功能的代码。如果遇到新功能有异常,在参数平台配置紧急配置新功能

2021-07-14 22:26:39 345

原创 Android 组件化 重构 笔记

上篇文章 Android 组件化 之 如何优雅的实现同级组件的通信 讲到组件化的3条好处一个工程(project)里面需要选择依赖哪几个组件,然后打成不同的包。由第一条引申,如果有需求「每个组件可以单独打个包来测试」。加快了编译速度。注意第一条「打成不同的包」是很广义的,除了打不同包,还有比如有一些base组件,能自己项目里用,还能打出一个独立的aar供其他项目用,也算作打成不同的包。组件化的牺牲很多文章说组件化可以 解耦、业务分层、业务隔离、代码变的更好维护,这些其实都是可以通过分包(P

2021-02-19 04:48:17 2437 3

原创 Android 组件化 之 如何优雅的实现同级组件的通信

Android 关于如何实现组件化的文章很多,涉及的内容也很广。如何实现引入库的统一,如何单module编译,如何做好业务拆分和解耦。本篇主要想在实现组件通讯方面探讨实现方案。——————————————————————————————前言google了一下,虽然限定时间2014年搜关键字「Android 组件化」也能搜出结果,但是「Android 组件化」文章的爆发期是从2015、2016年开始的。组件化也有很多种分法,目前流行的其中一种做法,会是这么分的。底层:一般是一个 lib_b.

2020-12-04 18:16:46 1912 4

原创 并发任务执行的几种方法 (同时上传多张图片请求)

业务需求有个业务需求是这样的。需要上传多张1~5张图片,使用一个专门的上传图片的网址。使用这个网址上传一个图片后会返回一个图片服务器地址。多张图片上传后可以获取多个服务器地址,再把这些图片地址加上一些其他参数,发起一个业务请求。这应该算一个很常见的产品需求。一开始我想着怎么没有可以上传多个图片的接口,后面想一次性上多个,弱网环境下,或者总上传文件体积太大。一个文件上传失败其他文件也都失败了。所以一次性只能上传一个也有好处的。照片实体类public class UploadImageItem {

2020-07-05 01:30:26 1649

原创 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 1908

原创 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 3188

原创 tinker 热修复 学习笔记

Tinker 热修复集成Tinker Github不兼容 build:gradle:3.5.1 问题升级到3.5,会导致tinker不可用,tinker还没兼容好https://github.com/BuglyDevTeam/Bugly-Android-Demo/issues/174——————————————————————————————tinker 通用使用步骤1.打个正常...

2019-12-16 11:52:04 636

原创 Android 关于监控生命周期的几种策略

上面文章讲了 AndroidSupport Library 26.1.0 开始,引入Lifecycles。官方正式完善了 Activity、Fragment 生命周期监控这方面的代码。在这之前我有看到这么两种方案。第一种是 Glide 使用的方案。以上是Glide 的简单用法是这样的。1、如何实现绑定生命周期public class Glide implem...

2019-08-10 22:00:10 724

原创 Android LiveData我的理解

LiveData用大众语言来来讲,是一个观察者,也是一个数据持有类或者可以称为一个数据的包裹类。它有别于其他的观察者的重点是,他具有生命周期感知能力,这里生命周期指的是activities, fragments, or services 的生命周期。讲到LiveData,就想到DataBinding,想到MVVM。LiveData的确一开始是为这种模式而设计出来的。LiveData搞懂,可以说...

2019-07-28 03:30:06 6360 1

原创 Android 关于过度绘制的那些事儿 UI流畅度优化

检测方法1.开发者选项 - 调试过度绘制1.原色 – 没有被过度绘制 – 这部分的像素点只在屏幕上绘制了一次。2.蓝色 – 1次过度绘制– 这部分的像素点只在屏幕上绘制了两次。3.绿色 – 2次过度绘制 – 这部分的像素点只在屏幕上绘制了三次。4.粉色 – 3次过度绘制 – 这部分的像素点只在屏幕上绘制了四次。5.红色 – 4次过度绘制 – 这部分的像素点只在屏幕上绘制了五次...

2019-04-29 02:58:20 883

原创 一个小型的Python flask项目,实现搜索张大妈关键字+筛选商品,符合规则商品推送。

#前言如果说Java算我的主语言,那当了这么久的程序猿,不学习一门副语言说不过去。近几年趋势下,Python和Go是目前最火的选择。目前状态下,我学习Go这种高并发语言可能没有什么使用场景,所以选了Python,入门简单,可玩性很高。17年(才)学习了Python,后面就一直寻找写点什么代码的机会。1.先是写了些很简单的脚本,配合正则表达式实现简单修改里面的文件内容。2.爬虫这么好...

2019-03-09 02:27:27 2987

原创 阿里云centos 部署python flask应用 使用uwsgi+nginx+supervisor 真入门级别配置

傻逼CSDN在markdown的预览模式把我英文引号给转成中文引号了。问题帖子 还没解决,持续坐等。不从完全小白开始写了,跳过了pyhton3的安装,Flask的使用这些。uWSGI 安装与配置虚拟环境如果需要配置虚拟环境,在项目根目录使用以下命令:进入虚拟环境# source venv/bin/activate退出虚拟环境# deactivate安装# pip3 uw...

2018-10-24 17:46:30 635

原创 mysql8 主从同步

傻逼CSDN在markdown的预览模式把我英文引号给转成中文引号了。算标题党一回,其实 mysql8 的主从同步跟 mysql5.7 的没有什么不同master 端配置配置文件 vim /etc/my.cnf[mysqld]# 日志文件名log-bin = mysql-bin# 要同步的数据库binlog-do-db = my_db_name# 主数据库端ID号s...

2018-10-23 18:53:14 1076

原创 阿里云 centos 安装mysql+基本配置

#####查看环境# rpm -q centos-releasecentos-release-7-4.1708.el7.centos.x86_64#####添加Mysql源头cd /etc/yum.repos.d/vim mysql.repo# Enable to use MySQL 8.0[mysql80-community]name=MySQL 8.0 Community...

2018-10-23 12:04:57 723

原创 EventBus 原理简析

基于eventbus:3.1.1 分析。一.注解写法关键字是@Subscribe后面括号内可选参数是,threadMode表示可以选择切换到哪个线程。sticky是否粘性事件,priority表示优先级。ThreadMode: POSTING 表示发送事件的线程,当前线程。ThreadMode: MAIN 表示UI线程ThreadMode: MAIN_ORD...

2018-09-02 17:41:10 1089

原创 python scrapy 入门爬虫 「什么值得买」关键字搜索

安装scrapy框架pip install Scrapy创建一个scrapy工程,名字为smzdmscrapy startproject smzdm创建包含下列内容的 smzdm 目录:smzdm/ scrapy.cfg smzdm/ __init__.py items.py pipelines....

2018-04-07 15:41:00 2921 1

原创 Java的阻塞和中断机制( wait notify使用 wait和sleep区别 interrupt使用和其他中断方法)

wait、notify和notifyAllwait和notify(notifyAll)一般是成对搭配出现的,用来资源调控。wait用来将当然线程挂起,notify/notifyAll用来恢复线程。它是类Object的方法,也就是所有的对象都可以使用。一个简单的例子public class WaitClassDemo { private static SimpleDateF...

2018-03-08 00:18:26 3701 3

原创 Android 应用界面绘制流程

上一篇文章《Android 应用界面显示流程》讲到,从Activity.setContentView(int)方法,把布局文件某xml交给了PhoneWindow,PhoneWindow把布局inflate出来附在了DecorView里,然后交给了WMS管理,WMS和AMS调度后最终把画面显示出来。这篇文章讲ViewRootImpl.performTraversals(),是如何把DecorV...

2018-03-04 22:15:56 3148

原创 Android 应用界面显示流程

Android最重要的两个模块(个人认为),线程和UI。线程我之前写了一篇博客了,感觉还算满意。AsyncTask源码解析 从AsyncTask讲到线程池至于UI,趁最近有空,必须得好好整理一下脑子里各种零碎的知识点+再学习学习,整理出几篇博客才行。初探Window相信大部分学习Android第一个学到的都是Activity,如果没有研究一下,很容易会理解成Activity就...

2018-02-19 03:17:52 4590

原创 阿里IoT使用总结

首先得感慨下写个App比之前真的简单方便多了。需要推送功能直接考虑集成友盟、极光、个推、小米推送、华为推送。需要IM功能直接考虑集成环信、融云、网易云信、腾讯云通、阿里云川等这些解决方案。这些传统功能就不谈了,连这两年崛起的直播、娃娃机、答题业务,你都能找到好几家第三方解决方案,提供完整sdk直接集成。 物联网(英语:Internet of Things,缩写IoT)理论上...

2018-02-14 00:13:42 16558 2

原创 做一个简单的共享元素Activity跳转

安卓的共享元素动画是个很给力的存在.但是可能由于只能运行在5.0或以上的系统上,所以感觉普及率一直不高.ps.现在看到大部分共享元素动画,都是在rom内置app里看到的.很好理解,自己做的rom,当然能确定是5.0以上的.单个app开发就不是这回事了. 有些开发者会想做一些通用的库,以此想整合代码,让共享元素动画这方面的代码更加简单.但实际使用效果感觉一般.所以我也只能总结一下...

2017-09-03 23:18:42 835

原创 关于RecyclerView的ItemDecoration

之前用 ItemDecoration 一直都是用的源码里唯一附带的 DividerItemDecoration。 或者直接在每个Item里写分割线代码了。一直没怎么管 ItemDecoration。这段时间因为需要用到所以学习了下用法。这个类需要继承 RecyclerView。ItemDecoration。有3种方法可以重写getItemOffsets 名字表示 item 的偏移,...

2017-05-31 23:23:11 362

原创 CoordinateLayout 自定义Behavior 仿百度外卖效果 实践

高仿百度外卖效果代码地址:https://github.com/yaodiwei/CoordinatorLayoutTester 真百度外卖效果  自定义Behavior一半分为两种类型一种是重写layoutDependsOn和onDependentViewChanged。然后根据dependency控件的大小或位置的改变,来使自己的控件改变。一种是重写on...

2017-04-27 01:20:52 2824

原创 Android 注解的使用 xUtils3和ButterKnife控件的注解注入对比

Java注解的定义:java注解(Annotation),是JDK1.5开始加入的源代码的一种特殊语法元信息。可以用于标注Java语言中的类、方法、变量、参数和包,然后在编译或运行时进行解析和使用,起到说明,配置的功能。注解的功能位于java.lang.annotation包中。JDK里常见的有@Override、@Deprecated、@SuppressWarnings。...

2017-03-06 21:12:21 2613

原创 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 9386 1

原创 内存泄漏检测分析工具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 14520

原创 一个好用的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 1157

原创 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 4119 2

原创 AsyncTask源码解析 从AsyncTask讲到线程池

我觉得AsyncTask算是Android源码里面比较杰出的一个了.里面涉及的知识点很多,并且运用起来也很合理.在安卓里,使用后台线程,并且需要与主线程交互的方式,最直观的就是new Thread+Handler 和 AsyncTask..在new Thread+Hander后,安卓开拓大神又创建了AsyncTask.我觉得有两个理由.第一.不用关注创建线程,使用线程,管理线程的...

2017-02-01 17:46:47 686

原创 android Activity启动过程 简析

概括先简略概括一下Activity的启动过程,以下拿点击Launcher来说。1.开始请求执行Activity,Launcher进程发送命令到AMSLauncher就是一个App,点击Launcher会隐式启动一个新的应用。所以跑的也是Activity.startActivity的流程。接着就是Activity.startActivityForResult() ——>...

2017-01-04 22:44:25 772

原创 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 637

原创 android 事件分发机制源码解析

首先我重新写了这了几个控件类,只是加了点打印日志,来观察里面的事件分发机制.然后写了个布局,如图.MainActivity有dispatchTouchEvent,onTouchEvent方法MyRelativieLayout有dispatchTouchEvent,onInterceptTouchEvent,onTouchEvent方法TextView和Button有...

2016-12-25 18:12:15 793

原创 StateTool 一种好用的"空页面 错误页面 等待页面 数据页面"切换工具

先上图 如图所示,页面主要有三个模块.空页面:表示联网成功,但是服务器没有数据可取的页面提示错误页面:表示网络等错误的页面提示.内容页面:就是我们正常流程显示的页面.    为了结构精简,你只需要引用一个类StateTool就行!!!!精简到没朋友..  开始讲解StateTool package com.yao.statetool...

2016-12-20 00:08:37 699

原创 (2019年10月更新) Android 最全的底部导航栏实现方法

本文(争取做到)Android最全的底部导航栏实现方法.现在写了4个主要方法.官方方法. 官方的 BottomNavigationActivity使用Android studio 新建一个工程,可以选择到这个BottomNavigationActivity。或者在工程里新建BottomNavigationActivity会创建出这么几个文件,分别介绍一下。...

2016-06-06 11:08:15 60400 37

原创 创建maven project

右键  -->  new  -->  maven project一般勾选(Create a simple project)Group Id  一般填写com .yaoArtifact Id 一般填写opsPackaging   一般填写   war 右键 --> team -->  添加至svn:ignore除了src以外的东西,     包括t...

2013-12-11 17:59:38 464

自己整理的所有的底部导航栏Tab切换方法

自己整理的所有的底部导航栏Tab切换方法

2016-07-03

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除