上一页 1 2 3 4 5 6 7 8 9 ··· 15 下一页
摘要: 转载自SparseArray源码解析 No1: Android官方推荐:当使用HashMap(K, V),如果K为整数类型时,使用SparseArray的效率更高. No2: HashMap是使用数组+链表的数据结构存储键值对,而SparseArray只是用了两个数组进行存储. No3: Conta 阅读全文
posted @ 2018-03-23 15:03 嘉禾世兴 阅读(491) 评论(0) 推荐(0) 编辑
摘要: No1: Android多项目设置 目录结构: MyProject/ setting.gradle app/ build.gradle libraries/ lib1/ build.gradle lib2/ build.gradle setting.gradle配置文件 也可以指定项目目录 No2: 阅读全文
posted @ 2018-03-22 16:37 嘉禾世兴 阅读(272) 评论(0) 推荐(0) 编辑
摘要: No1: 指定共享库 No2: android除了标准的sdk,还存在两种库 1)add-on库:位于add-ons目录下,大部分是第三方厂商或者公司开发的 2)optional可选库:位于platforms/android-xx/optional目录下,一般是为了兼容旧版本的API,比如HttpC 阅读全文
posted @ 2018-03-22 15:09 嘉禾世兴 阅读(585) 评论(0) 推荐(0) 编辑
摘要: No1: minSdkVersion No2: android代号版本对应表 No3: versionCode-内部版本号 No4: versionName-版本名称 No5: testApplicationId-app的包名 No6: testInstrumentationRunner-配置单元测 阅读全文
posted @ 2018-03-21 17:43 嘉禾世兴 阅读(261) 评论(0) 推荐(0) 编辑
摘要: No1: Android Gradle插件分类 App插件id:com.android.application Library插件id:com.android.library Test插件id:com.android.test No2: 除了插件id之外,如果是第三方的插件,还要配置它们的依赖cla 阅读全文
posted @ 2018-03-21 16:02 嘉禾世兴 阅读(183) 评论(0) 推荐(0) 编辑
摘要: No1: No2: gradle提供的依赖配置 No3: 依赖的通用使用格式 No4: 依赖项目 No5: 依赖文件 这样配置后,libs文件夹下的扩展名为jar的都会被依赖 No6: SourceSet--源代码集合--源集。是java插件用来描述和管理源代码及其资源的一个抽象概念,是一个java 阅读全文
posted @ 2018-03-20 14:06 嘉禾世兴 阅读(185) 评论(0) 推荐(0) 编辑
摘要: No1: 应用插件 这三种写法等价 注:‘java‘是一个plugin id No2: 应用脚本插件 结果 No3: No4: 应用第三方发布的插件 No5: 使用plugins DSL应用插件 No6: 自定义插件 结果 注:自定义的插件必须要实现Plugin接口,这个接口只有一个apply方法, 阅读全文
posted @ 2018-03-19 16:04 嘉禾世兴 阅读(281) 评论(0) 推荐(0) 编辑
摘要: No1: 多种方式创建任务 结果 No2: Task参数中Map的可用配置 No3: 多种方式访问任务 结果 注: 任务都是通过TaskContainer创建的,其实TaskContainer就是我们创建任务的集合,在Project中我们可以通过tasks属性访问TaskContainer,所以我们 阅读全文
posted @ 2018-03-19 15:02 嘉禾世兴 阅读(282) 评论(0) 推荐(0) 编辑
摘要: No1: 设置文件默认名是setting.gradle,放在根目录下,大多数作用都是为了配置子工程 No2: 一个Project包含很多个Task。Task就是一个操作,一个原子性的操作。其实它是Project对象的一个函数 No3: 结果 说明这两个任务是一样的 No4: 依赖:用于控制执行顺序 阅读全文
posted @ 2018-03-16 17:21 嘉禾世兴 阅读(186) 评论(0) 推荐(0) 编辑
摘要: No1: Groovy中分号不是必须的 No2: Groovy中,单引号和双引号都可以定义一个字符串常量,不同的是单引号标记的是纯粹的字符串常量,而不是对字符串里的表达式做运算,但是双引号可以。 结果 No3: List 结果 No4: Map 结果 No5: 方法括号可省略 结果 No6: ret 阅读全文
posted @ 2018-03-16 15:58 嘉禾世兴 阅读(235) 评论(0) 推荐(0) 编辑
摘要: No1: Window下搭建Gradle:添加GRADLE_HOME环境变量,然后把GRADLE_HOME\bin添加到PATH系统变量里保存即可。完成后打开CMD,运行gradle -v来验证 No2: 运行 No3: 生成Wrapper 生成文件 No4: 意思是配置Wrapper使用2.4版本 阅读全文
posted @ 2018-03-16 13:09 嘉禾世兴 阅读(270) 评论(0) 推荐(0) 编辑
摘要: No1: Project的build.gradle文件添加 Module:app的build.gradle添加 No2: @Inject、@Component 调用 No3: @Module、@Provides 调用 No4: @Named、@Qualifier 调用 No5: @Singleton 阅读全文
posted @ 2018-03-14 17:02 嘉禾世兴 阅读(289) 评论(0) 推荐(0) 编辑
摘要: No1: EventBus三要素: 1)Event:事件 2)Subscriber:事件订阅者 3)Publisher:事件发布者 No2: EventBus的4种ThreadMode(线程模型): 1)POSTING(默认):该事件是在哪个线程发布出来的,事件处理函数就会在哪个线程中运行 2)MA 阅读全文
posted @ 2018-03-14 17:02 嘉禾世兴 阅读(185) 评论(0) 推荐(0) 编辑
摘要: No1: 标准注解: 1)@Override:覆写 2)@Deprecated:过时 3)@SuppressWarnings:取消警告 4)@SafeVarargs:申明使用了可变长度参数的方法 No2: 元注解:用来注解其他注解,从而创建新的注解 1)@Targe:注解所修饰的对象范围 2)@In 阅读全文
posted @ 2018-03-13 15:34 嘉禾世兴 阅读(293) 评论(0) 推荐(0) 编辑
摘要: No1: 添加依赖库 Project的build.gradle文件添加 在Module:app的build.gradle文件添加 No2: 绑定控件id No3: 绑定资源 No4: 绑定监听 No5: 可选绑定 No6: ButterKnife注解处理器是ButterKnifeProcessor, 阅读全文
posted @ 2018-03-12 21:59 嘉禾世兴 阅读(192) 评论(0) 推荐(0) 编辑
摘要: No1: RxJava使用 1)创建Observer(观察者) 或者 2)创建Observable(被观察者) 3)Subscribe(订阅) No2: RxJava的Subject 可以理解为Subject=Observal+Observer 1)PublishSubject:PublishSub 阅读全文
posted @ 2018-03-12 17:17 嘉禾世兴 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 事件总线RxBus,替代EventBus和otto 1)创建RxBus 2)发送事件 3)接收事件 4)取消订阅事件 阅读全文
posted @ 2018-03-12 16:51 嘉禾世兴 阅读(266) 评论(0) 推荐(0) 编辑
摘要: 1)配置 2)修改请求网络接口 Retrofit请求接口返回Call。若结合RxJava,则需要把Call改为Observable 3)修改请求网络方法 4)请求返回数据格式封装 5)取消请求 阅读全文
posted @ 2018-03-12 14:29 嘉禾世兴 阅读(259) 评论(0) 推荐(0) 编辑
摘要: No1: Lock接口 No2: 不要讲获取锁的过程写在try块中,因为如果在获取锁(自定义锁的实现)时发生了异常,异常抛出的同时,也会导致锁无故释放 No3: No4: 队列同步器(同步器)是用来构建锁或者其他同步组件的基础框架,它使用了一个int成员变量表示同步状态,通过内置的FIFO队列来完成 阅读全文
posted @ 2018-03-08 21:55 嘉禾世兴 阅读(503) 评论(0) 推荐(0) 编辑
摘要: No1: Hybrid就是原生和Html5混合开发app No2: 插件化方法Altas或者DroidPlugin No3: 热修复技术可以把更新补丁上传到云端,此时APP就可以直接从云端下拉补丁直接应用生效 优势: 1)无需重新发版,实时高效热修复 2)用户无感知修复,无需下载新的应用,代价小 3 阅读全文
posted @ 2018-03-08 17:33 嘉禾世兴 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 看阿里巴巴的《深入探索Android热修复》,里面的代码看不懂,一查才知道是Smali语法,百度了语法,转载如下 转载自smali 语言语法 1.smali apk文件通过apktool反编译出来的都有一个smali文件夹,里面都是以.smali结尾的文件。smali语言是Davlik的寄存器语言, 阅读全文
posted @ 2018-03-08 15:13 嘉禾世兴 阅读(612) 评论(0) 推荐(0) 编辑
摘要: No1: Volley源码分析: Volley.newRequestQueue-> RequestQueue.start()-> CacheDispatcher.start()->CacheDispatcher.run()-> NetworkDispatcher.start()->NetworkDi 阅读全文
posted @ 2018-03-05 16:03 嘉禾世兴 阅读(382) 评论(0) 推荐(0) 编辑
摘要: No1: 实现多线程的3中方法 1)继承Thread,重写run()方法 2)实现Runnable接口,并实现该接口的run()方法 3)实现Callable接口,重写call()方法 No2: 原子性: 对基本数据类型变量的读取和赋值是原子性操作,即这些操作是不可被中断的 只有语句1是原子性操作 阅读全文
posted @ 2018-03-04 21:20 嘉禾世兴 阅读(254) 评论(0) 推荐(0) 编辑
摘要: No1: View的滑动 1)layout()方法的 2)offsetLeftAndRight()与offsetTopAndBottom() 对上面代码进行修改 3)LayoutParams(改变布局参数) 同样对上面代码进行修改 4)动画 5)scrollTo与scrollBy scrollTo( 阅读全文
posted @ 2018-03-04 20:29 嘉禾世兴 阅读(549) 评论(0) 推荐(1) 编辑
摘要: 接上篇《Android进阶之光》--Android新特性 No1: 组件: 1)底部工作条-Bottom Sheets 2)卡片-Cards 3)提示框-Dialogs 4)菜单-Menus 5)选择器 6)滑块控件-Sliders 7)进度和动态 8)Snackbar(底部可操作弹出框)与Toas 阅读全文
posted @ 2018-03-03 21:29 嘉禾世兴 阅读(1278) 评论(0) 推荐(0) 编辑
摘要: Android 5.0新特性 1)全新的Material Design设计风格 2)支持多种设备 3)全新的通知中心设计--按照优先级显示 4)支持64位ART虚拟机 5)多任务视窗Overview 6)设备识别解锁--比如附近信任设备 7)Ok Google语音指令 8)Face unlock面部 阅读全文
posted @ 2018-03-03 18:22 嘉禾世兴 阅读(746) 评论(1) 推荐(0) 编辑
摘要: 非空校验一直是一个麻烦的问题,此模式可以稍微缓解 例: 增加一个NullAnimal 这样在Person类中就不需要“animal!=null”这句话了,疑问我们提供了一个实现接口的所有方法,不会再产生null对象。 animal对象可能由MVC框架映射产生,我们只要定义一个默认的映射对象是Null 阅读全文
posted @ 2018-02-14 11:00 嘉禾世兴 阅读(132) 评论(0) 推荐(0) 编辑
摘要: No1: 单一职责原则提出了一个编写程序的标准,用“职责”或“变化原因”来衡量接口或类设计得是否优良,但是“职责”和“变化原因”都是不可度量的,因项目而异,因环境而异。 No2: 在类中调用其他类时务必要使用父类或接口,如果不能使用父类或接口,则说明类的设计已经违背了LSP原则 No3: 如果子类不 阅读全文
posted @ 2018-02-14 10:56 嘉禾世兴 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 需求:设计一个MVC框架 (以下可能摘要不全,后期整理) 架构图: * 核心控制器:MVC框架入口,负责接收和反馈HTTP请求 * 过滤器:Servlet容器内的过滤器,实现对数据的过滤处理 * 拦截器:对进出模型的数据进行过滤,不依赖系统容器,只过滤MVC框架内的业务数据 * 模型管理器:提供一个 阅读全文
posted @ 2018-02-14 10:27 嘉禾世兴 阅读(443) 评论(0) 推荐(0) 编辑
摘要: 创建类模式包括工厂方法模式、建造者模式、抽象工厂模式、单例模式和原型模式。 其中单例模式要保持在内存中只有一个对象,原型模式是要求通过复制的方式产生一个新的对象。 【工厂方法(抽象工厂) VS 建造者模式】 共产方法模式关注的是一个产品整体,但在建造者模式中,一个具体产品的产生是依赖各个部件的产生以 阅读全文
posted @ 2018-02-14 09:38 嘉禾世兴 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 接上篇《设计模式之禅》--备忘录扩展:clone方式的备忘录 需求:对象全状态备份方案 发起人 BeanUtils工具类 备忘录角色 调用 结果 初始化状态 state1=中国stat2=强盛state3=繁荣 修改后状态 state1=软件stat2=架构state3=优秀 恢复后状态 state 阅读全文
posted @ 2018-02-12 11:31 嘉禾世兴 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 接上篇《设计模式之禅》--策略扩展:策略枚举 需求:使用clone方式实现备忘录模式 发起人角色 备忘录管理员角色 上面两项合并 调用 结果 初始状态是:初始状态...修改后状态是:修改后的状态...恢复后状态是:初始状态 注意: 使用Clone方式的备忘录模式,可以使用在比较简单的场景或者比较单一 阅读全文
posted @ 2018-02-12 11:20 嘉禾世兴 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 接上篇《设计模式之禅》--代理扩展:动态代理 需求:加减法计算 调用 关键 Calculator.ADD.exec(a, b) 阅读全文
posted @ 2018-02-11 15:29 嘉禾世兴 阅读(168) 评论(0) 推荐(0) 编辑
摘要: No1: 网络传输应用通常使用TCP、IP或UDP这三种协议实现数据传输。在传输数据的过程中,需要通过一个双向的通信连接实现数据的交互。在这个传输过程中,通常将这个双向链路的一端称为Socket,一个Socket通常由一个IP地址和一个端口号来确定。 No2: 在网络编程中有两个主要的问题,一个是如 阅读全文
posted @ 2018-02-09 17:10 嘉禾世兴 阅读(338) 评论(0) 推荐(0) 编辑
摘要: 接上篇《设计模式之禅》--代理扩展:强制代理 动态代理就是在实现阶段不用关心代理谁,而在运行阶段才指定代理哪一个对象。相对来说,自己写代理类的方式就是静态代理 面向切面编程(AOP)核心就是采用了动态代理机制 调用 结果 拓展: 调用 阅读全文
posted @ 2018-02-09 17:04 嘉禾世兴 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 接上篇《设计模式之禅》--工厂方法扩展:实现单例 需求:就算你找到真实角色,也强制你使用指定代理 第一次尝试 结果 第二次尝试 结果 第三次尝试 结果 阅读全文
posted @ 2018-02-09 16:39 嘉禾世兴 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 接上篇《设计模式之禅》--单例扩展:多例模式 需求:使用工厂方法模式实现单例模式 利用反射创建单例对象 还可以扩展单例构造器 阅读全文
posted @ 2018-02-09 14:50 嘉禾世兴 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 需求:一个类只能产生两三个对象 运行结果如下 阅读全文
posted @ 2018-02-09 11:22 嘉禾世兴 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 参考文档: 简明理解三次握手和四次挥手 TCP三次握手与四次挥手过程 No1: 为什么要三次握手? 答:三次握手的目的是建立可靠的通信信道,说到通讯,简单来说就是数据的发送与接收,而三次握手最主要的目的就是双方确认自己与对方的发送与接收机能正常。 第一次握手:Client什么都不能确认;Server 阅读全文
posted @ 2018-02-08 15:20 嘉禾世兴 阅读(160) 评论(0) 推荐(0) 编辑
摘要: No1: 客户端与服务器的交互流程: 1)客户端执行网络请求,从URL中解析出服务器的主机名 2)将服务器的主机名转换成服务器的IP地址 3)将端口号从URL中解析出来 4)建立一条从客户端与Web服务器的TCP连接 5)客户端通过输出流向服务器发送一条HTTP请求 6)服务器向客户端回送一条HTT 阅读全文
posted @ 2018-02-08 14:29 嘉禾世兴 阅读(194) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 ··· 15 下一页