- 博客(38)
- 资源 (1)
- 收藏
- 关注
转载 转——AMS分析「 Activity启动流程 」
读了很多AMS的源码解析博文,这篇是写的比较全面、清晰的一篇~结合源码和此篇博文,可以对Activity启动流程有一个全面的认知。另外补充一点,源码阅读过程可以多关注Binder客户端和服务端的区分,清楚当前代码是在客户还是在服务端中。转自:作者:泡面先生_Jack链接:https://www.jianshu.com/p/501690f88f68来源:简书Activity是A...
2020-02-08 16:19:51
517
1
原创 机器学习入门知识笔记
本文大纲为:最小二乘法线性回归逻辑回归神经网络图像识别 从最小二乘法说起以下例子来自知乎:https://www.zhihu.com/question/37031188,马同学的回答假设有一堆数据,如下图所示,可以看出这些点像是某种线性关系,我们假设他们满足如下线性关系:接下来,根据这些点的值,我们需要拟合出这条直线,使得这些点到这条直线的距离尽...
2019-02-22 16:28:32
364
原创 Android studio编译出现 :找不到符号 符号: 方法 xxx() 位置: 类 xxx
分享最近遇到的一个神坑:报错的信息很常见:找不到符号 符号: 方法 xxx() 位置: 类 xxx 导致这个错误的原因非常多。我的场景是,新建了一个module1,主module依赖module1。当第一次编译时,没有问题!!!但是修改了module1中的某个类,编译就出错了,但是!!!clean一下项目,又可以编译了!!!找了半天没找到原因,最后同事发现我新建但modul...
2018-11-01 19:54:24
17383
2
原创 图解设计模式读书笔记(十八)——Proxy(代理)模式
使用场景:当生成“本人”时比较消耗资源,一些事情就可以交给“代理人”来帮忙处理,只有当“代理人”无法处理时,再生成“本人”来处理。类关系图:Proxy(代理人)和RealSubject(本人)都实现同个接口Subject,这样客户端就不需要关系具体是代理人处理的还是本人处理的。一些可由代理人处理的就交给Proxy处理,必须要本人处理的,再生成RealSubject实例,让本人去处理...
2018-09-25 20:04:34
327
原创 图解设计模式读书笔记(十七)——Flyweight(轻量/享元)模式
使用场景:对象可以复用/共享的情况,只new一次,然后将对象实例保存起来,下次需要使用的时候,先查看该对象是否已经存在,过存在则直接返回,不存在再new。类关系图一般有一个FlyweightFactory负责创建并存储需要的Flyweight对象,核心代码如下:Flyweight flyweight = pool.get(name);if(flyweight == null...
2018-09-25 20:04:00
194
原创 图解设计模式读书笔记(十六)——State(状态)模式
使用场景:参考https://www.cnblogs.com/java-my-life/archive/2012/06/08/2538146.html这里的一句话:状态模式的功能就是分离状态的行为,通过维护状态的变化,来调用不同状态对应的不同功能。类关系图:State一般设计为接口,定义状态的行为,Context持有State对象,状态的切换可以放在Context做(Conte...
2018-09-18 19:53:02
266
原创 图解设计模式读书笔记(十四)——Observer(观察者)模式
观察者模式的原理是比较简单的,将观察者实例设置给被观察者,被观察者发生状态变化时,使用观察者实例调用对应的方法,那么观察者就能收到对应的变化了。这里要注意一下实现的细节。使用场景:观察者模式在代码中使用是非常频繁的,特别是设计Gui的开发。书中有句话:适用于能根据对象状态进行相应处理的场景。 类结构图:具体的实现一般情况会先对观察者Observer和被观察者Subject进...
2018-09-18 19:51:16
197
原创 图解设计模式读书笔记(十三)——Mediator(仲裁者)模式
使用场景: Mediator模式适用于多组件之间存在制约关系的情景。例如Gui开发中,各种组件是独立的,但开发的界面中各个组件存在制约关系。书中提到的登陆框的例子,便是这种情景。 类关系图:仲裁者Mediator负责生成各种组件colleague,并将自身实例传给组件,以便组件可以回调状态给仲裁者,这里可用观察者模式实现。meidator还通过controlCol...
2018-09-18 19:11:38
543
原创 图解设计模式读书笔记(十二)——Facade(简单窗口)模式
这个模式的名称比较抽象,如果不看内容,基本猜不出是什么。应用场景:功能实现的业务逻辑非常复杂,特别是对一些流程有严格对控制,但对于客户端而言却相对简单,不需要关注其内部实现的情况。举个例子,登陆功能。客户端只需要知道有个登陆的接口,不需要知道登陆的具体实现,也不用关心登陆操作需要先干什么再干什么,这种情况适合用简单窗口模式。说白了,就是提供一个窗口类,对外只开放一些简单的API,客...
2018-09-18 19:09:59
190
原创 图解设计模式读书笔记(十一)——Chain of Responsibility(责任链)模式
看到这个模式,最先想到的就是okhttp跟Android的事件处理机制了。使用场景:当功能出现分层,层级之间相对独立这种情况,可考虑使用责任链模式。类关系图:Handler是一个抽象类,它拥有属性next,类型是自身类型,并有处理请求但request方法。具体的Handler实现类定义自身对事件的处理逻辑,如果自身处理不了,则将事件传递给next,由next去处理,以此类推...
2018-09-17 18:57:05
274
原创 图解设计模式读书笔记(十)——Visitor(访问者)模式
设计目的:为了使数据结构跟对数据对操作分离,从而让数据结构更独立。也就是说,要增加或修改某种操作时,不需要修改数据结构,而是扩展或者修改数据结构的访问者visitor。非常符合开闭原则。 类结构图:Element是数据结构,为子类统一提供了accept接口来接受visitor对象。Visitor是访问者的抽象,提供访问数据结构的接口。书中的反问文件夹的例子里,accep...
2018-09-15 11:19:40
238
原创 图解设计模式读书笔记(十五)——Memento(备忘录)模式
使用场景:需要保存状态,以便将来执行redo/undo操作来恢复状态。多用在棋牌类游戏,书写编辑类应用上。基本思想:在保证封装性的基础上,将类的属性状态在外部保存起来。保证封装性的方式起始就是控制好memento类的可见性,即对于敏感数据,不使用public修饰,一般不用修饰符修饰,使得只能在同一个包中类能够访问。 类关系图:类图比较简单,Originator负责生...
2018-09-15 11:17:17
220
原创 图解设计模式读书笔记(九)——Decorator(装饰)模式
应用场景:最主要的应用场景就是当要增加一些基本功能的排列组合而产生的非常大量的功能时。举几个例子:1.文中的装饰显示的例子,有多种装饰方式,比如在字符串两边加 “|”,或者上下加一行“+------+”这种符号,文中只提到对单行的String的装饰,还可能会有其他类型的装饰,如Int,boolean等。如果不使用装饰着模式,则需要对StringDisplay类不断的继承扩展,特别是在需...
2018-09-15 10:57:16
422
原创 图解设计模式读书笔记(八)——Composite(组合)模式
类结构图:先来看看composite模式的类结构图,非常简单,只涉及三个类:应用场景:主要就是树形结构的设计,树结构设计父节点,子叶节点,其中Leaf就是子叶节点,Composite是父节点的抽象,由于各种节点都有一些通用的属性或者方法,所以Leaf和Composite继承自同一个父类Component,Component定义了节点所有的方法,提供add和remove和getChi...
2018-09-13 20:15:04
220
原创 图解设计模式读书笔记(七)——Strategy(策略)模式
顾名思义,策略模式一般应用在使用多种策略(算法)的情况下,比如一些棋牌游戏中,电脑会有多种策略去应付用户,如入门级别,高手级别等。策略模式将操作抽象成接口,具体的算法由子类实现,有一个上下文环境Context来使用策略进行操作,context只需持有Strategy对象,使用其接口进行操作,而不需要关心具体的算法是如何实现的,当使用某种策略时,是需要给context传对应当ConcreteSt...
2018-09-12 18:41:03
289
原创 图解设计模式读书笔记(六)——Bridge(桥接)模式
废话:我觉得要理解一种设计模式,除了掌握怎么实现这种设计模式之外,更重要的是这种设计模式的应用场景。但还多时候应用场景很难用一些话概括起来,就像桥接模式中说的功能层次跟实现层次需要分离的时候,比较难理解。所有我更倾向于“如果不这么做,会怎样”的分析,从而来理解“这么做”的好处。解决的问题:桥接模式还是比较有用的一种模式,解决的问题是将系统的功能层次跟实现方法层次分离。这里要先理解功能层...
2018-09-11 19:32:07
277
原创 图解设计模式读书笔记(五)——Prototype(原型)模式
原型模式是一种创建对象的方式,主要原理是使用java的Cloneable接口来克隆对象。书中举的加工字符串例子有点复杂,可能对原型模式的重点不够突出,因为有很多业务代码。我自己总结一下大致原理:Prototype继承自Cloneable接口,ConcreatePrototpye是具体的原型类,继承自Prototpye(Prototype可以是接口,那么就是实现Prototype接口)。...
2018-09-04 20:24:31
239
原创 图解设计模式读书笔记(四)——单例模式
书中介绍的单例模式是懒汉式的,除此之外还有几种实现方式,这里总结一下几种常用的单例模式和优缺点。1.饿汉式public class Singleton { private static Singleton instance = new Singleton(); private Singleton (){} public static Singleton...
2018-08-31 19:29:41
182
原创 图解设计模式读书笔记(三)——工厂模式
书中的工厂模式分成了两章来叙述,只区分工厂方法模式和抽象工厂模式,因为简单工厂模式只是工厂方法模式中的一个特例。但是书中举的例子我觉得没那么好理解,于是自己设定了一个应用场景来帮助理解这三种设计模式。 (一)简单工厂模式假设有如下场景:有一个页面,上面有个Button,Button的风格有ButtonA和ButtonB两种,设置一能够让Button风格切换。此场景可以应用简单工...
2018-08-31 09:11:57
261
原创 图解设计模式读书笔记(一)——Iterator模式
一、涉及的类public interface Aggregate { public abstract Iterator iterator();}public interface Iterator { public abstract boolean hasNext(); public abstract Object next();}public cla...
2018-08-29 20:38:00
205
原创 结城浩的《图解设计模式》设计模式之Adapter模式的理解
书中举的电源适配器的例子,还有网上各种同类的例子,无法说服我。Banner类的两个方法,代表输出交流100伏,虽然外部调用的是Print接口的要输出12伏特的方法,但是实际还是调用PrintBanner的两个方法,其调用的还是Banner类的方法,那本质上还是输出100伏特啊,这样子在我看来,适配器的工作只是单纯的把两个接口对接起来,但是中间并没有任何“转换”之类的工作,并没有体现出如何将10...
2018-07-27 20:33:15
248
原创 Android studio配置NDK
Android开发在对接一些三方功能或者算法时,常常涉及JNI的开发,一般只需要把so文件放入指定目录,然后写好对接接口,load入so库,就可以使用了。但在AS自己搞的时候,发现对JNI开发的步骤还是有点生疏,以此文记录下整个配置过程。1.NDK的安装,NDK是JNI开发的工具,可以上Google官网下载,也可以直接在AS里下载,如下图,在SDK tools里勾选后直接apply,就开始下载了,...
2018-03-31 22:24:42
23049
4
原创 C++的一些备忘笔记
1.字符常量'A'与字符串常量"A"不同,'A’只是一个字符,没有长度;"A"是由'A'和'\0'两个字符组成,长度为2。2. short——2字节int——4字节long int——4字节float——4字节double——8字节long double——10字节3.函数返回值的类型与函数定义中函数的类型标识符应一致,若不一致,则一函类型标识符为准,自动进行类型转换。4.如果函数值为整型,...
2018-03-26 21:21:19
293
转载 Android Camera系统架构学习(一)
阅读了很多博客和文档,对android camera系统的架构有了一些了解,借此文总结,备忘。1.代码总体架构,主要来自http://blog.csdn.net/luozirong/article/details/52244031的总结。对上图的解释如下:如上图为Camera的主要框架,其中最上面的Camera.java是应用的使用的接口,它处理维护一个在java层的状态外核心功能都是通过Andr...
2018-03-26 21:17:14
1044
原创 wifi display学习总结
一、Wi-FiDisplay相关知识1.Miracast依赖的Wi-Fi技术项有:Wi-Fi Direct:也就是Wi-Fi P2P。它支持在没有AP(Access Point)的情况下,两个Wi-Fi设备直连并通信。Wi-Fi Protected Setup:用于帮助用户自动配置Wi-Fi网络、添加Wi-Fi设备等。11n/WMM/WPA2:其中,11n就是802.11n协议,它将11a和11g
2018-01-17 22:12:10
7596
4
原创 深入理解android Wi-Fi模块学习总结——WifiService
除了看源码外,我结合博文和书籍一起理解,这里推荐几篇博文和一本书:http://blog.csdn.net/u013467735/article/details/42487537http://blog.csdn.net/u013467735/article/details/42493665http://blog.csdn.net/u013467735/article/details/4
2018-01-16 23:06:20
4069
原创 Android(N) Wifi模块分析
这里先说一下读wifi模块的一个步骤,我是先从理解Settings模块的设计开始的,刚开始以为settings模块只是一个listview进行显示,但android的设计让我出乎意料,特别是android7.0在Settings模块中还加入了抽屉,让实现流程更加复杂。之后大致看了下WifiSettings这个fragment,这里主要是界面的设计,当阅读到WifiService中时,发现到处都是S
2018-01-16 22:52:16
1600
2
原创 android N(7.0)WiFi模块相关消息机制
WiFi模块涉及多个线程、多个进程,它们之间的交互方式主要通过收发消息进行,主要包括:Broadcase、AsyncChannel、StateMachine消息机制1.Broadcase广播在wifi模块中使用较为频繁,使用方法也比较简单,通过新建过滤器,并添加相应的action后,进行注册即可监听相应的广播事件。如以下代码:[WifiSettings.java]I
2018-01-12 10:57:22
557
原创 Android N(7.0)Settings模块界面加载流程学习
Android系统源码中,Settings模块的功能多达二三十个,包括wifi、蓝牙、nfc、屏幕设置等等重要功能模块,可以说十分庞大。又因为各个子模块又能够通过桌面添加快捷方式等形式进入对应模块的设置界面,因此其实现机制有些独特。Android7.0由于在设置中加入了抽屉,因此界面加载部分代码有所变化。先从Androidmanifest.xml看起,发现程序入口是Settings类,其继承自
2018-01-08 22:16:45
2272
1
原创 Android Wi-Fi P2P原理与源码学习
一,Wi-Fi P2P相关知识(一)P2P及其依赖的技术项(二)P2P工作流程包括1.设备的发现、2.组协调、3.认证关联、4.WPS以及4次握手。总体流程如下图: 1. Device Discovery工作流程介绍P2P Device Discovery的工作流程包含两个状态和两个阶段。先来看两个状态,它们分别是:Search State:在该状态中,P
2018-01-08 21:59:08
5835
原创 Effective Java阅读笔记(二)——第三章 对所有对象都通用的方法
Effective Java阅读笔记(一)——第三章 对所有对象都通用的方法
2017-10-19 17:18:25
214
原创 android Notification自定义view(view不更新的问题)
android Notification自定义view(view不更新的问题)
2016-09-14 11:55:50
4434
原创 Android Popwindow的使用(从屏幕下方往上弹起,背景变暗)
Android Popwindow的使用(从屏幕下方往上弹起,背景变暗)
2016-09-09 11:59:46
1716
原创 android中用户头像设置的一点心得——关于bitmap被回收的问题
最近在做的项目中,处理到用户更换头像的功能,实现方法大致如下:1.点击用户头像,弹出从相册中选取或者拍照选取,选取好了之后,调用图片剪裁功能进行剪裁,最后返回其bitmap对象,工具用的是一个photoTool;2.对于返回的bitmap对象,获取其路径,并将其转化为File对象,上次至服务器,并获取服务器返回的服务器端图片存放地址,并保存。3.若上次成功则将用户头像imageView
2016-02-25 16:07:06
1929
原创 Android开发中GridView的使用
大家都知道,在android开发中ListView是一种十分常用的组件,但是当需要将一个个的item进行行列排列时,则需要用GridView,这两者的使用方式非常相似,大概可以分为以下四步:1.布局;2.准备数据源;3.新建适配器;4.加载适配器。下面进行详细介绍。一,布局。1,主布局。xml version="1.0" encoding="utf-8"?>xmlns:andro
2016-02-16 17:49:44
4345
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人