Android设计模式-责任链

简述 责任链模式是一种对象的行为模式。通过建立一条链来组织请求的处理者,请求将沿着链进行传递,请求发送者无须知道请求在何时、何处以及如何被处理,实现了请求发送者与处理者的解耦。 如Android 中的事件传递,Activity->ViewGroup->View,当然也可以View->ViewGroup-> Activity ,android 中是U形事件传递 另外OKhttp的interceptors实现,OkHttp发送网络请求的一切核心功能,包括建立连接、发送请求、读取缓存等,都是通过int...阅读全文

Segmentfault 2020-02-21 15:03:45 Reducto

activity 7个生命周期

activity 7个生命周期 onCreate - onStart - onResume - onPause - onStop -onDestory (1)onCreate 表示Activity正在被创建,这是一个生命周期的第一个方式。在这个方法中做一些初始化工作,比如setContentView 去加载界面资源布局,初始化Activity 所要函数。 (2)onStart: 表示Activity正在被启动,即将开始,但是没有出现在前台,无法交互。 (3)onResume: 表示Activit...阅读全文

CSDN博客 2020-02-20 19:01:38 DTJ_74

安卓(kotlin)实现实时监听网络变化

要想实现监听手机网络的连接情况,在断网时能够及时提醒用户,我们可以注册一个广播接收器,然后对手机网络变化进行实时监听。 首先,我们先新建一个类继承BroadcastReceiver IntentReceiver.kt主要代码 class IntentRecevier() : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { val manager = context.getSystem...阅读全文

Segmentfault 2020-02-19 18:03:46 叻妮

Kotlin – inner and nested

Kotlin – inner and nested 和Java一样,在Kotlin中,你可以在一个类中声明另一个类。不太一样的是,在kotlin中,嵌套类(nested class)默认不能访问其外部类(outer class)的实例,除非你明确指出可以访问。 在kotlin中,一个没有修饰符的嵌套类与Java中的静态嵌套类一样。为了能让其引用其外部类,需要用inner修饰符指定。 在class A中声明一个class B 在Java中 在Kotlin中 Nested class (doesn’...阅读全文

CSDN博客 2020-02-19 14:01:04 Sino_Crazy_Snai 等

2020 年编程语言盘点展望:Java 老兵不死,Kotlin 蓄势待发

在进入新的十年之际,各行各业都在进行盘点与展望。SegmentFault 作为开发者社区与科技行业的垂直媒体,一直关注行业的发展与相关动态,近期已陆续为大家整理了各大平台、社区针对技术领域作出的预测与盘点。 今天,继续为大家粗译(文末有原文地址,粗译仅供大家前期了解,建议阅读英文原文)O'Reilly 发布的编程语言发展展望 —— 《Where programming languages are headed in 2020》。 该盘点及分析由数位编程专家整理得出,包含了大量他们对于某些经典编程...阅读全文

Segmentfault 2020-02-18 13:03:56 徐九

Android 开发技术周报 Issue#268

新闻 [[图]Android Auto状态栏上的当地天气图标宣告回归](https://www.cnbeta.com/articl... Google再次从Play商店中删除了涉嫌从事间谍活动的ToTok 谷歌意外短暂上线Android 11开发者预览版网页 Google Play Protect在2019年阻止了19亿次恶意软件安装 [[图]非Galaxy Z Flip独占:谷歌称上下分屏功能将向其他品牌开放](https://www.cnbeta.com/articl... Gboard输入...阅读全文

Segmentfault 2020-02-17 12:03:43 inferjay

一、Android的各个版本

一、Android的各个版本 区别DVM与JVM 二、项目结构 HelloAndroid --src(源码文本夹) MainActivity.java: 主界面类 --gen(自动生成的源码文本夹) R.java : 对应res文件夹 drawble : 图片 layout : 布局 string : 字符串 --res(资源文件夹) drawable-xxx : 图片文件夹 为了适配不同分辨率的手机 layout : 界面的布局文件 功能类似于HTML values : 常量文件夹 strin...阅读全文

CSDN博客 2020-02-16 20:01:36 qq_40794973

Android 开发技术周报 Issue#267

新闻 Android 11偷跑:一台谷歌Pixel 2 XL已升级 部分谷歌Pixel 2相机不能用:手机已过保 教程 Android 音视频开发打怪升级系列教程 开源库 madmana high performance alternative to Google's standard IMA android SDK. If you have your own VAST server and want to render video ads and have full control over ...阅读全文

Segmentfault 2020-02-13 23:07:41 inferjay

ADB常用命令及作用

ADB ADB全称Android Debug Bridge。 ADB是一种功能多样的命令行工具,起到了调试桥的作用,可以用来操作Android设备。 ADB是Android开发/测试人员强大的工具。 可以说,ADB对我们Android的开发至关重要,深入的了解常用的命令和作用就显得至关重要了 ADB使一种客户端-服务器程序,包括以下三个组件: 客户端:用于发送命令,客户端在开发计算机上运行,通过发出adb命令从命令行终端调用客户端。 守护进程:在设备上运行命令,守护进程在每个设备上作为后台进程运...阅读全文

Segmentfault 2020-02-13 23:03:47 DemoYang

AwesomeGithub组件化探索之旅

之前一直听说过组件化开发,而且面试也有这方面的提问,但都未曾有涉及具体的项目。所以就萌生了基于Github的开放Api,并使用组件化的方式来从零搭建一个Github客户端,起名为AwesomeGithub。 在这里对组件化开发进行一个总结,同时也希望能够帮助别人更好的理解组件化开发。 先来看下项目的整体效果 下面是项目的结构 为何要使用组件化 对于传统的开发模式,一个app下面是包含项目的全部页面模块与逻辑。这样项目一旦迭代时间过长,业务模块逐渐增加,相应的业务逻辑复杂度也成指数增加。模块间的互...阅读全文

Segmentfault 2020-02-13 23:03:46 午后一小憩

Android设计模式(三) 观察者模式

Android开发中的基于观察者模式实现的设计还是很多的,比如rxjava、LiveData...常见的按钮点击事件 Button ---> 被观察者 OnClickListener ---> 观察者 setOnClickListener() ---> 订阅 OnClick() ---> 事件 观察者模式定义可一对多的依赖关系,让多个观察者同时监听某一个对象,当这个主体对象在状态上发生变化时,会通知所有观察者对象 ,使他们能自动更新自己,叫法也有很多,发布-订阅(Publish-Subscrib...阅读全文

Segmentfault 2020-02-13 23:03:46 Reducto

58APP引入Kotlin进行Android开发

配置 最外层build.gradle文件添加以下buildscript依赖,之前为了支持安居客使用kotlin已添加 classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" module配置(目前仅在58ClientHybridLib进行了配置,后续其他同学开发其他库时再单独配置) build.gradle文件中添加 apply plugin: 'kotlin-android-extensions'` apply...阅读全文

Segmentfault 2020-02-13 23:03:46 Jacy

Android设计模式(二) 建造者模式

建造者模式解决的就是将一个复杂对象的构建与它的表示分离,从而使对象的构建过程能有不同的表示。什么意思? fun main(args: Array<String>) { MacBook(15,8,16,512,true,"test","") } class MacBook(private var screenSize:Int, private var cpuCore:Int, private var ramCapacity:Int, private var diskCapacity:Int, pr...阅读全文

Segmentfault 2020-02-13 23:03:45 Reducto

Android设计模式(一) 工厂模式

简单工厂模式 核心作用就是为了通过工厂类隐藏对象的创建逻辑,避免暴露给调用方 以富士康生产不同类型的Apple Ipad产品为例: fun main(args: Array<String>) { val ipadNeeded = FoxconnFactory().product(PadType.AIR) print(ipadNeeded.biometric) } interface IPad { // 搭载的生物认证识别 val biometric: String } enum class Pa...阅读全文

Segmentfault 2020-02-13 23:03:45 Reducto

Kotlin如何安全访问lateinit变量

Kotlin设计之初就是不允许非null变量在声明期间不进行初始化的,为了解决这个问题,Kotlin lateinit 允许我们先声明一个变量,然后在程序执行周期的将来某个时候将其初始化,让编译检查时不会 因为属性变量未被初始化而报错。如果未初始化将导致以下异常: kotlin.UninitializedPropertyAccessException: lateinit property mList has not been initialized 所以我们在 Kotlin 1.2及更高版本上,...阅读全文

Segmentfault 2020-02-13 23:03:45 Reducto

Kotlin核心语法(八):注解与反射

博客主页 1. 声明并应用注解 1.1 应用注解 在kotlin中使用注解的方法与java一样,都是以@字符作为名字的前缀,并放在要注解声明的最前面。 来看下@Deprecated注解,在Kotlin中用replaceWith参数增强了它。 @Deprecated(message = "Use removeAt(index) instead .", replaceWith = ReplaceWith("removeAt(index)")) fun remove(index: Int) { } 如...阅读全文

Segmentfault 2020-02-13 23:03:44 小兵兵同学

Kotlin核心语法(七):泛型

博客主页 1. 泛型类型参数 1.1 泛型函数和属性 在使用集合的库函数都是泛型的。我们来看下slice函数的定义: //public fun 类型形参声明 List<接收者类型形参>.slice(indices: Iterable<Int>): List<返回类型的类型形参> public fun <T> List<T>.slice(indices: Iterable<Int>): List<T> 在一个具体的列表上调用这个函数时,可以显式地指定类型实参,但大部分情况下不必这样做,因为编译器会...阅读全文

Segmentfault 2020-02-13 23:03:43 小兵兵同学

Kotlin核心语法(六):高阶函数,Lambda作为形参和返回值

博客主页 1. 声明高阶函数 高阶函数就是以另一个函数作为参数或者返回值的函数。在kotlin中,函数可以用lambda或函数引用来表示。例如:标准库中的filter函数将一个判断式函数作为参数,所以就是一个高阶函数 list.filter { x > 0 } 1.1 函数类型 为了声明一个以lambda作为实参的函数,需要知道如何声明对应的形参的类型。 先来看一个简单的例子:把lambda表达式保存在局部变量中。 // 有两个Int类型参数和Int类型的返回值的函数 val sum = {x:...阅读全文

Segmentfault 2020-02-13 23:03:43 小兵兵同学

如何在 Java 和 Kotlin 之间进行互操作

本文首发于微信公众号「Android开发之旅」,欢迎关注 ,获取更多技术干货 前言 目前kotlin是谷歌首推的开发Android的语言,但由于历史原因,我们绝大部分项目依旧还是以Java为主的,也就是说存在Java和Kotlin两种语言同时开发的情况。 有人会说把老项目全部翻译成Kotlin,的确可以怎么做,但是成本还是挺大的。我们只能一点一点慢慢的向kotlin语言迁移。 那么在迁移的过程中就避免不了Java和Kotlin相互调用的情况。即Kotlin调用Java或者Java调用Kotlin...阅读全文

Segmentfault 2020-02-13 23:03:42 李四爷