![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
安卓进阶
听风丨说话
这个作者很懒,什么都没留下…
展开
-
设计模式之----责任链模式
闲来无事,回顾一下设计模式,顺手记录下。 责任链模式:多个处理者都有可能处理事件,从而避免发送者和接收者之间的耦合关系。将这些处理者形成一条链,沿着这条链,传递事件的请求,直到处理者将该事件处理为止。几个名词解释 这里用的都是大白话处理者:能够消费事件的对象链:当前处理者对象有下一个处理者对象的引用,能够进行事件传递发送者:将处理者组织成链条,并将事件传递给接收者(第一个处理者)处原创 2017-09-27 11:33:23 · 311 阅读 · 0 评论 -
Android面向面试复习----HandlerThread的妙用
HandlerThread的妙用 很多博客讲了HandlerThread的用法,但是没有具体的应用场景,可能也是了解并未真正使用!1. HandlerThread是什么? handlerThread是内部有一个looper轮询器的Thread线程。HandlerThread产生的背景 google为了避免以下几种情况,给android开发者提供了这样一个异原创 2018-02-03 12:38:36 · 555 阅读 · 1 评论 -
Android面向面试复习----AsyncTask详解
AsyncTask详解1. 什么是AsyncTask? 封装了线程池和Handler,这个框架主要是用来执行异步任务的,内部集成了Handler,所以它可以很灵活的在UI线程和异步线程之间进行切换。2. AsyncTask介绍三个参数 AsyncTask3. AsyncTask实例创建AsyncTask的子类,实现各方法,分别处理相应的逻辑。pub原创 2018-02-03 14:46:37 · 401 阅读 · 0 评论 -
Android面向面试复习----IntentService详解
IntentService详解(附个推IntentService示例)1. 什么是IntentService?IntentService继承Service,内部创建了HandlerThread和异步线程的Handler来进行耗时操作启动方式和Service一样在开启IntentService时,会回调执行onHandleIntent方法(异步线程中执行,非UI线程)执行完成后会自动原创 2018-02-03 16:16:38 · 432 阅读 · 0 评论 -
Android面向面试复习----Handler详解
Handler详解 这篇文章缘起于一道面试题: Android面试题 请解释下单线程模型中Message、Handler、MessageQueue、Looper之间的关系 虽然能够大致说明白,但是自己对答案也不太满意,翻一翻源码,从源码角度剖析一番。1. 概述Handler相关对象模型关系首先看一下Handler、Looper、MessageQueue、Mess原创 2018-02-04 13:43:10 · 516 阅读 · 1 评论 -
Android面向面试复习----Activity复习
Activity复习 Activity是我们学习Android的时候的第一个组件,它提供界面用户可以进行滑动、点击等交互。使用上很简单,但是有一些相关的知识也许需要很好的掌握才能用好。1. Activity生命周期Activity的四种状态running: 活动状态,可以交互paused: 失去焦点,或者被盖住的情况下,无法进行交互stopped: Activity被完...原创 2018-02-11 17:48:13 · 343 阅读 · 0 评论 -
Android面向面试复习----Fragment复习
Fragment复习1. Fragment为什么被称为第五大组件Fragment为什么被称为第五大组件 使用频率高,有自己的生命周期,同时可以灵活的加载到Activity中去。它是依赖于Activity的,不能单独存在。Fragment的加载静态加载 在xml布局中使用fragment标签加载进来,name指定对应的Fragment即可。 动态加载/...原创 2018-02-11 19:22:07 · 333 阅读 · 0 评论 -
day 8-9 面试题:泛型、Android8.0适配
面试题:1. 泛型: 1. 什么是泛型,能解决什么问题 2. 说说java中的泛型的工作机制 3. 在泛型中extends和super关键字的区别 2. Android 8.0适配?1. 面试题解题1.1 泛型1.1.1 什么是泛型泛型是Java SE1.5引入的,泛型本质是参数化类型,将所操作的数据类型指定为一个参数,该参数类型可以用在类、接口、方法中。...原创 2019-07-19 17:10:29 · 213 阅读 · 0 评论 -
day 8-9 算法:二叉树遍历、递归与分治
1. 题目实现pow(x,n),即计算x的n次幂函数求众数,给定一个大小为n的数组,找到其中的众数。众数是指出现次数大于 n/2 的元素。2. 基本知识2.1 二叉树遍历前序遍历:根-左-右中序遍历:左-根-右后序遍历:左-右-根前序顺序:A-B-D-E-C-F-G中序遍历:D-B-E-A-F-C-G后序遍历:D-E-B-F-G-C-A2.2 递归递归,就是在运...原创 2019-07-19 17:12:14 · 289 阅读 · 0 评论 -
day 10-11 面试题:Android6.0-Android 7.0适配
面试题:1. Android 6.0适配 2. Android 7.0适配1. Android 6.0适配1.1 HttpClient不支持问题在Android 6.0以上,HttpClient被google从系统库中移除,有两种方式可以处理module下的gradle文件中的添加声明useLibrary ‘org.apache.http.legacy’添加H...原创 2019-07-19 17:13:20 · 388 阅读 · 0 评论 -
day 10-11 算法:贪心算法,广度、深度优先、股票买卖最佳时机;二叉树层次遍历
1. 题目给定一个数组,它的第i个元素是这支股价的第i天的价格,只能持有一股,买卖次数不限,无交易中介费。二叉树的层次遍历:给定一个二叉树,返回其按层次遍历的节点值2. 基本知识2.1 贪心算法2.1.1 定义又叫贪婪算法,在对问题求解时,总是做出在当前看来最好的选择。2.1.2 适用场景问题能够分为子问题来解决,子问题的最优解能递推到最终问题的最优解。贪心与动态规划的...原创 2019-07-19 17:14:33 · 711 阅读 · 0 评论 -
day 14-15 面试题:Binder机制、动画机制
面试题:1. 什么是Binder,用来干什么?讲讲Binder的机制? 2. 动画机制 1.Android中的动画分为哪些种类 & 特点 & 缺点。 2.知道SVG & 矢量动画吗? 3.给我说说转场动画。 4.给我谈谈插值器 & 估值器 的作用。 5.说说Android动画框架实现的原理。 1. Binder的机制1.1 什么是Bind...原创 2019-07-31 01:00:52 · 555 阅读 · 0 评论 -
day 15-16 面试题:Android屏幕适配
面试题:1. Android屏幕适配 1. 说说安卓的一些屏幕单位 2. 谈谈你项目中的一些屏幕适配的经验 3. 今日头条轻量级适配方案了解吗?给我说说原理 1. Android屏幕适配1.1 说说安卓的一些屏幕单位px:像素,屏幕上的一个像素点dpi:一英寸的像素的点数,安卓中取 160像素/英寸 为标准dpidensity:像素密度: 屏幕dpi/标准dpidip(...原创 2019-08-21 23:59:13 · 438 阅读 · 0 评论 -
day 17 面试题:Handler相关
面试题:Handler相关1. 谈谈Handler消息机制,有什么作用,有哪些要素,流程是怎样的?2. 为什么系统不建议在子线程访问UI?3. 一个Thread可以有几个Looper?几个Handler?4. 如何将一个Thread线程变成Looper线程?Looper线程有哪些特点?5. 可以在子线程直接new一个Handler吗?怎么做?6. Message可以如何创建,哪种效果...原创 2019-08-22 00:00:36 · 517 阅读 · 0 评论 -
day 18-19 面试题:Android计算机网络基础
1. 计算机网络体系结构2. http3. HTTP的缓存机制4. Https5. TCP1. 计算机网络体系结构计算机网络体系是指计算机网络的各个层级+协议的组合,定义了计算机网络所能完成的功能。主要分为三种:OSI体系结构TCP/IP体系结构五层体系结构其中五层体系结构融合了TCP/IP和OST体系,更好理解。下面说的就是五层体系结构。1.1 分层五层体系从上往...原创 2019-08-22 00:05:15 · 212 阅读 · 0 评论 -
day 20 面试题:Glide面试题
1. Glide的优点2. 生命周期绑定原理3. 缓存原理1. Glide的优点使用简单,链式调用比较方便 Glide.with(context) .load(uri) .into(imageView);占用内存较小默认使用RGB_565格式,是Picasso的内存占用的一半(Picasso使用RGB_8888)无代码侵入相对P...原创 2019-08-22 00:09:56 · 7325 阅读 · 2 评论 -
day 21-22 面试题:ButterKnife面试题,git面试题
1. 为什么要用ButterKnife2. ButterKnife原理1. 为什么要用ButterKnife使用注解代替findViewById和事件绑定,简化代码,节省开发时间能够方便的处理Adapter中的ViewHolder绑定的问题使用过程中不会影响app的运行效率和性能(编译时注解)代码更清晰,可读性更强2. ButterKnife原理实现原理ButterKnif...原创 2019-08-22 00:26:15 · 1008 阅读 · 0 评论 -
day 23-24 面试题:synchronized和volatile的区别;final,finally,finalize区别
面试题:1. synchronized和volatile的区别2. final,finally,finalize区别1. synchronized和volatile的区别1.1 JVM内存模型JVM将内存组织分为主内存和工作内存两部分。主内存主内存包括方法区和堆。所有变量都存在主内存中,对于所有线程都是共享的。工作内存每一个线程有一个工作内存,它包含两部分,该线程的私有...原创 2019-08-22 00:28:57 · 1159 阅读 · 0 评论 -
设计模式六大原则之----依赖倒置原则
一、定义 高层模块不应该依赖于底层模块,二者都应该依赖其抽象,抽象不应该依赖细节,细节应该依赖抽象。抽象就是接口和抽象类;细节就是具体的实现类依赖倒置本质:通过抽象即接口或者抽象类,使各个类和模块间彼此独立,实现模块间的松耦合友情提醒:xmind导出的图片有点模糊,请方法查看 二、 问题的由来2.1 问题 类A直接依赖类B,假如要将类A改为依赖类C,那么必须修改类A来完成。这种场景下,原创 2017-11-15 17:42:52 · 555 阅读 · 0 评论 -
设计模式六大原则之----迪米特、开闭原则(六大原则简单总结)
由于迪米特和开闭原则不具体写代码逻辑,同时,这两个原则部分思想是和前面的4个原则有重合部分,所以就在一起来回顾。一、 迪米特原则1. 定义 也叫最少知识原则,一个对象应该对其他对象有最少的了解,即一个类对自己需要耦合或者调用的类知道的最少。2. 生活实例看代码生活实例:有些朋友间距离太近,无话不说,无所不知,类A和类B两个人配合非常默契,如果某一天其中一个人无法和另一个人配合,而用第三个人原创 2017-11-20 21:06:15 · 1228 阅读 · 0 评论 -
设计模式之----工厂方法模式
比如我要一个手机,我可以直接把钱给厂商,他就能造一个手机给我,我不需要关心手机是如何造出来的,这是简单工厂模式。如果,我今天要一部小米,明天要一部三星,后天要一部苹果,那么我的简单工厂内部逻辑就需要一直修改,这就违背了开闭原则(对扩展开放,对修改封闭)–这就引申出我们今天的工厂方法模式。1、定义 工厂方法模式去掉了工厂中的静态创建方法,定义为抽象方法,使得子工厂可以继承实现该方法,创建具体对象原创 2017-10-10 12:59:00 · 333 阅读 · 0 评论 -
设计模式之----观察者模式(Listview刷新原理分析)
一、 定义 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使他们能够自动更新自己。二、角色抽象主题角色(Subject)抽象主题角色把所有观察者对象的引用保存到一个聚集里(例如ArrayList对象),每个主题都可以有任何数量的观察者。抽象主题提供增加、移除观察者对象的方法。也叫抽象被观察者角色。具体主题原创 2017-10-26 23:45:33 · 575 阅读 · 0 评论 -
设计模式之----原型模式
1. 概念 用原型的实例指定创建的种类并通过拷贝这些原型创建新的对象。 通俗:复制一模一样的对象出来。 目的:保护最原始的那一份存档,隐藏复制的过程。 2. 原理在需要跟当前对象一模一样的对象时,直接使用该对象的克隆方法,避免手动去new对象,再逐一进行赋值等操作(这样就把复制过程隐藏)。同时,改变新的对象不会对原来的数据造成影响。3. 代码示例 非重写c原创 2017-10-10 17:30:08 · 287 阅读 · 0 评论 -
设计模式之----单例模式
1. 定义 一个类仅有一个实例,并且自行实例化,向整个系统提供。关键点:仅有一个实例自己创建该实例能够给调用者提供仅有的实例2. 单例的实现方式 单例实现从以下几个方面来对比 是否能够在使用时加载? 线程是否安全? 是否易用、易理解? 2.1 饿汉式 类加载时创建自身实例,线程安全。/** * 饿汉式 * 1.原创 2017-10-10 23:26:25 · 405 阅读 · 0 评论 -
设计模式之----状态模式
友情提示:xmind导出的图片分辨率比较小,缩放查看。一、定义 当一个对象在其内部状态改变的时候改变其行为。这个对象看上去就像是改变了它的类一样。又称状态对象模式,状态模式是对象的行为模式。二、角色环境(Context)角色 上下文:定义客户端所感兴趣的接口,并且保留一个具体状态类的实例。这个定义了对象的当前状态抽象状态(State)角色 定义一个接口,用以封装环境(Context)原创 2017-10-28 15:58:32 · 632 阅读 · 0 评论 -
【翻译】Android中的AOP编程
【翻译】Android中的AOP编程 翻译自:https://fernandocejas.com/2014/08/03/aspect-oriented-programming-in-android/ AOP介绍; AspectJ 是在 Android 应用介绍; AspectJ 原理介绍。转载 2017-10-12 11:46:18 · 1256 阅读 · 0 评论 -
AspectJ教程--AOP面向切面编程框架(Android)
AOP的概念很久前就接触过了,不过没有真正写过项目,甚至Demo都没有,今天把这点缺陷补上。 推荐两篇文章(本文部分图片引自这两篇文章): 1. 【翻译】Android中的AOP编程 2. 【深入理解Android之AOP】1. 本篇文章总览2. 什么是AOP2.1 定义 AOP是Aspect Oriented Program的首字母缩写,译为:面向切面编程。类似的OOP,译原创 2017-10-13 14:02:43 · 9280 阅读 · 2 评论 -
设计模式之----建造者模式(AlertDialog源码分析)
1. 简单例子建造房子可以认为是一个建造者模式的实际场景。建房可以包括,建造地板、墙,房顶等。(每间房子都是这样的一个建造顺序,但细节是有区别的)2. 定义 将一个复杂的对象的构建和它的表示分离,使得同样的构建过程可以创建不同的表示。 (使用多个简单的对象一步一步构建成一个复杂的对象) 例子:比如肯德基有很多套餐,同样都是由汉堡、饮料、薯条、甜筒组成,但他们的口味,价格都不一样。原创 2017-10-22 22:12:14 · 1037 阅读 · 0 评论 -
Android安全问题--漏洞及解决方案
前几天给笔记本加了个固态硬盘,悲剧的格式化了一个硬盘(误认为是SSD),然后我的很多资料都丢了(包括之前收集的所有的安全问题及解决方案和一些通用的解决方案),不过都不重要,都在脑袋里~~~本文列出的是360网站搜罗的内容 部分漏洞描述一样,但是漏洞名不一样(并不是写错了,这个可以看作是一个问题的两面性) 在参考链接中有很多都是Android的官方文档中的,但是在原创 2017-11-01 17:19:42 · 11903 阅读 · 3 评论 -
# 设计模式之----命令模式
一、背景该模式出现是为了解决一些问题:解耦,以达到对修改封闭,对扩展开放的原则(开闭原则);命令组合实现功能。二、定义 将一个请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化;对请求排队或记录请求日子,以及支持撤销的操作。 本例以录音机播放和暂停为例: 普通模式:按下键盘,调用录音机去播放或者暂停(需要写不同的分支,耦合度高,扩展时需要直接改动这部分原创 2017-10-25 11:05:27 · 443 阅读 · 0 评论 -
设计模式之----策略模式(ListAdapter和TimeInterpolator源码分析)
一、定义 策略模式定义了一系列算法,并将每一个算法封装起来,而且使他们之间可以相互替换,策略模式让算法独立于使它的客户独立而变化。 策略模式的重点不是如何实现算法,而是如何组织、调用这些算法,从而让程序结构更灵活,具有更好的维护性和扩展性。二、角色2.1 环境(Context)角色 该角色持有一个Stragtegy的引用,可以执行Stragtegy的方法2.2 抽象策略(Stra原创 2017-11-02 16:47:15 · 714 阅读 · 0 评论 -
设计模式之----解释器模式
一、定义 给定一种语言,定义他的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中句子。解释器是一种用的比较少的行为模式,其提供了一种解释语言的语法,或者表达式的方式。该模式定义了一个表达式的接口。二、实际运用正则表达式,比如,判断是否是手机号的正则:"^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$"xml解析sql语句的执行三、原创 2017-10-26 00:25:36 · 389 阅读 · 0 评论 -
设计模式之----模板方法模式(AsyncTask源码解析)
一、定义 定义一个操作中的算法骨架,而将步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义算法的某些特定步骤。 这里跟工厂方法模式很像,工厂方法模式的定义是:工厂方法模式去掉了工厂中的静态创建方法,定义为抽象方法,使得子工厂可以继承实现该方法,创建具体对象。我的工厂模式文章链接:工厂方法模式 工厂方法模式和模板方法模式区别:一个是把对象原创 2017-10-26 10:56:26 · 471 阅读 · 0 评论 -
设计模式之----迭代器模式
一、 定义 提供一种方法顺序访问一容器对象中的各个元素,而又不需要暴露该对象内部的表示。二、 角色抽象迭代器(Iterator):定义遍历元素所需方法。具体迭代器(ConcreteIterator):实现具体的遍历方法抽象容器(Aggregate):提供iterator()方法的抽象父类或者接口。具体容器类(ConcreteAggregate):具体容器实现类,实现iterator()原创 2017-11-13 16:36:12 · 461 阅读 · 0 评论 -
设计模式六大原则之----里氏替换原则
一、定义 所有引用基类的地方,必须能透明的使用其子类对象。通俗的说:遵循里氏替换原则的代码,只要父类出现的地方就可以使用子类来替换它而不会产生任何错误,使用者不需要知道用的是父类还是子类。 它的核心是继承友情提醒:xmind导出的图片有点模糊,请方法查看二、优缺点 它的核心是继承,它的优缺点也是继承的优缺点2.1 优点代码共享:子类拥有父类的属性和方法重用性:子类重用父类的代码原创 2017-11-14 21:24:30 · 815 阅读 · 0 评论 -
设计模式六大原则之----单一职责原则
一、定义 规定一个类只有一个发生变化的原因。通俗理解为:一个类只负责一项职责。 友情提醒:xmind导出的图片有点模糊,请方法查看二、 问题的由来2.1 问题 类T负责两个不同的职责,当职责P1改变需求时需要修改T类,这时候就有可能因为修改的逻辑导致职责P2出现故障2.2 解决方案 遵循单一原则,创建两个类T1和T2,在修改T1的时候不会影响T2,同理,修改T2的时候也不影响T1的逻原创 2017-11-14 19:40:53 · 394 阅读 · 0 评论 -
设计模式六大原则之----接口隔离原则
一、定义 建立单一的接口,功能尽量细化, 不要建立臃肿的接口。不依赖不需要的接口,剔除不需要的接口最小接口,对接口进行细化,方法数最少友情提醒:xmind导出的图片有点模糊,请放大查看 二、 问题的由来2.1 问题 如下图,类C和类D分别实现接口I,I中有5个方法,在子类Class C中只需要用到1、2、3,但确需要实现所有方法;在子类Class D中,本来只需要用到4、5,也需原创 2017-11-20 20:10:02 · 838 阅读 · 0 评论 -
day 25-26 算法:并查集、岛屿的个数、朋友圈问题
两个题解法其实是一致的,当多练一遍1. 题目给定一个由’1’(陆地)和’0’(水)组成的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或者垂直方向相邻的陆地连接而成。你可以假设网格的四个边均被水包围。https://leetcode-cn.com/problems/number-of-islands/班上有N名学生,其中有些人是朋友,有些则不是。他们的友谊具有传递性。如...原创 2019-08-31 18:12:07 · 743 阅读 · 1 评论