注册
环信即时通讯云

环信即时通讯云

单聊、群聊、聊天室...
环信开发文档

环信开发文档

ChatGPT讨论

ChatGPT讨论

畅所欲言
RTE开发者社区

RTE开发者社区

汇聚音视频领域技术干货,分享行业资讯
技术讨论区

技术讨论区

技术交流、答疑
资源下载

资源下载

收集了海量宝藏开发资源
iOS Library

iOS Library

不需要辛辛苦苦的去找轮子, 这里都有
Android Library

Android Library

不需要辛辛苦苦的去找轮子, 这里都有
1
评论

java 设计模式:工厂方法模式 Java 设计模式 Android

王二蛋和他的张大花 发表了文章 • 1606 次浏览 • 2021-04-20 14:28 • 来自相关话题

前言简单工厂模式每增加一个产品就要增加一个具体产品类和一个对应的具体工厂类,这增加了系统的复杂度,违背了“开闭原则”。“工厂方法模式”是对简单工厂模式的进一步抽象化,其好处是可以使系统在不修改原来代码的情况下引进新的产品,即满足开闭原则。优点:用户只需要知道具... ...查看全部
1
评论

java 设计模式:简单工厂 设计模式 Java Android

王二蛋和他的张大花 发表了文章 • 1141 次浏览 • 2021-04-20 11:55 • 来自相关话题

工厂模式的定义定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中。这满足创建型模式中所要求的“创建与使用相分离”的特点。简单工厂如果要创建的产品不多,只要一个工厂类就可以完成,这种模式叫“简单工厂模式”。简单工厂通常为静态方法,因此... ...查看全部
0
评论

Kotlin Vocabulary | 数据类 kotlin Android

柳天明 发表了文章 • 762 次浏览 • 2021-04-20 10:42 • 来自相关话题

一只小奶狗会有名字、品种以及一堆可爱的特点作为其属性。如果将其建模为一个类,并且只用来保存这些属性数据,那么您应当使用数据类。在使用数据类时,编译器会为您自动生成 toString()、equals() 与 hashCode() 函数,并提供开箱即用的 解构 ... ...查看全部
0
评论

Rxjava 线程切换原理 retrofit Android

柳天明 发表了文章 • 919 次浏览 • 2021-04-20 10:40 • 来自相关话题

前言 rxjava 可以很方便的进行线程切换, 那么rxjava是如何进行线程切换的呢?阅读本文可以了解下rxjava 是如何进行线程切换的及线程切换的影响点。 一个简单的代码: Observable.create(new ObservableOnSubsc... ...查看全部
0
评论

聊聊 Bitmap 的一些知识点 bitmap Android

柳天明 发表了文章 • 845 次浏览 • 2021-04-20 10:36 • 来自相关话题

Bitmap 应该是很多应用中最占据内存空间的一类资源了,Bitmap 也是导致应用 OOM 的常见原因之一。例如,Pixel 手机的相机拍摄的照片最大可达 4048 * 3036 像素(1200 万像素),如果使用的位图配置为 ARGB_8888(Andro... ...查看全部
0
评论

kotlin 扩展函数之Boolean扩展 kotlin

柳天明 发表了文章 • 921 次浏览 • 2021-04-20 10:33 • 来自相关话题

Kotlin 扩展函数Kotlin 能够扩展一个类的新功能而无需继承该类或者使用像装饰者这样的设计模式,这样一来,可以为一个你不能修改的、来自第三方库中的类编写一个新的函数。 这个新增的函数就像那个原始类本来就有的函数一样,可以用普通的方法调用。我们在Andr... ...查看全部
0
评论

Kotlin 单例模式的常用写法 kotlin

柳天明 发表了文章 • 833 次浏览 • 2021-04-20 10:30 • 来自相关话题

饿汉式 object Singleton 复制代码 线程安全的懒汉式 class Singleton private constructor() { companion object { private var instance: S... ...查看全部
0
评论

java 设计模式:组合模式 Java 设计模式 Android

王二蛋和他的张大花 发表了文章 • 1418 次浏览 • 2021-04-20 10:17 • 来自相关话题

1、概念将对象以树形结构组织起来,以达成“部分-整体”的层次机构,使得客户端对单个对象和组合对象的使用具有一致性。是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象... ...查看全部
2
评论

java 设计模式:外观设计模式 Java 设计模式 Android

王二蛋和他的张大花 发表了文章 • 1183 次浏览 • 2021-04-20 10:15 • 来自相关话题

1、概念外观设计模式的主要目的在于让外部减少与子系统内部多个模块的交互,从而让外部能够更简单的使用子系统。他负责把客户端的请求转发给子系统内部的各个模块进行处理。2、使用场景当你要为一个复杂子系统提供一个简单接口时客户程序与抽象类的实现部分之间存在很大的依赖性... ...查看全部
0
评论

java 设计模式:装饰者模式 Java 设计模式 Android

王二蛋和他的张大花 发表了文章 • 1080 次浏览 • 2021-04-20 10:14 • 来自相关话题

简单详解:1、概念动态地给一个对象添加一些额外的职责。就增加功能来说, 装饰模式相比生成子类更为灵活。该模式以对客户端透明的方式扩展对象的功能。2、使用场景在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。和继承类似添加相应的职责。当不能采用生成... ...查看全部
0
评论

java 设计模式:适配器模式 Java 设计模式 Android

王二蛋和他的张大花 发表了文章 • 1102 次浏览 • 2021-04-20 10:13 • 来自相关话题

adapter定义:将一个接口转换成客户希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。类适配器定义:是把适配的类的api转化成为目标类的api。adapter是为了让adaptee与Target发生关系建立的a... ...查看全部
0
评论

java 设计模式:建造者模式 Java 设计模式 Android

王二蛋和他的张大花 发表了文章 • 1022 次浏览 • 2021-04-20 10:12 • 来自相关话题

概念:建造者模式是较为复杂的创建型模式,将组件和组件的组件过程分开,然后一步一步建造一个复杂的对象。所以建造者模式又叫生成器模式。它允许用户在不知道内部构建细节的情况下,非常精细地控制对象构建流程。该模式是为了将构建过程非常复杂的对象进行拆分,让它与它的部件解... ...查看全部
0
评论

从retrofit来学动态代理 设计模式 Android

王二蛋和他的张大花 发表了文章 • 736 次浏览 • 2021-04-19 17:58 • 来自相关话题

个人感觉,retrofit中的动态代理比较典型,我就拿出来解读一下:先来阅读一下retrofit 的源码,看retrofit怎么来实现动态代理ApiService apiService = retrofit.create(ApiService.class); ... ...查看全部
0
评论

你真的会用单例么? 设计模式 Android

王二蛋和他的张大花 发表了文章 • 1220 次浏览 • 2021-04-19 17:52 • 来自相关话题

单例是什么?是一种对象创建模式,可以确保项目中一个类只产生一个实例。好处对于频繁使用的对象可以减少创建对象所花费的时间,这对于重量级对象来说,简直是福音。由于new的减少,对系统内存使用频率也会降低,减少GC的压力,并缩短GC停顿时间,这也会减少Android... ...查看全部
0
评论

iOS 实例对象,类对象,元类对象 iOS开发

zuyu 发表了文章 • 739 次浏览 • 2021-04-19 17:48 • 来自相关话题

OC对象的分类OC对象主要分为三类:instance(实例对象),class (类对象),meta-class(元类对象)实例对象:实例对象就是通过类调用alloc来产生的instance,每一次调用的alloc都是产生新的实例对象,内存地址都是不一样的,占据... ...查看全部
0
评论

iOS 对象的关联---isa/superclass指针 iOS开发

zuyu 发表了文章 • 710 次浏览 • 2021-04-19 17:43 • 来自相关话题

类对象和元类对象的存储结构里面都包含了一个isa指针,今天我们来看看它的作用,以及实例对象类对象元类对象之间的关联实例对象的isa指针当实例对象(instance)调用对象方法的时候,实例对象的isa指针指向类对象(class),在类对象中,查找对象方法并调用... ...查看全部
0
评论

iOS KVO底层原理&&KVO的isa指向 iOS开发

zuyu 发表了文章 • 887 次浏览 • 2021-04-19 17:39 • 来自相关话题

一.简单复习一下KVO的使用定义一个类,继承自NSObject,并添加一个name的属性#import <Foundation/Foundation.h> NS_ASSUME_NONNULL_BEGIN @interface TCPerson ... ...查看全部
0
评论

iOS 音视频编解码----H264-I(关键)帧,B/P(参考)帧 iOS开发

zuyu 发表了文章 • 967 次浏览 • 2021-04-19 17:34 • 来自相关话题

回顾一下视频里面到底是什么内容元素1.图像(image)2.音频(Audio)3.元素信息(Meta-data)编码格式1.Video:H2642.Audio:AAC(后面文章讲)3.容器封装:MP4/MOV/FLV/RM/RMVB/AVIH264当我们需要对... ...查看全部
0
评论

requestLayout竟然涉及到这么多知识点 Android

可口可乐 发表了文章 • 844 次浏览 • 2021-04-19 15:11 • 来自相关话题

1. 背景 最近有个粉丝跟我提了一个很有深度的问题。 粉丝:锁屏后,调用View.requestLayout()方法后会不会postSyncBarrier? 乍一看有点超纲了。细细一想,我把这个问题拆分成了两个问题,本文我将紧紧围绕这两个问题,讲解requ... ...查看全部
1
评论

Gradle 爬坑指南 -- 概念初解、Grovvy 语法、常见 API(2) gradle

一盆绿萝 发表了文章 • 826 次浏览 • 2021-04-19 15:05 • 来自相关话题

Groovy 语法 再次强调 Groovy 是基于 java 扩展的动态语言,直接写 java 代码是没问题的。上面的 hello world 就是这么跑起来。Groovy 没啥难的,大家把他当做一个新的语言来学下就行,Groovy 本身比较简单也不用我们学习... ...查看全部
1
评论

Gradle 爬坑指南 -- 概念初解、Grovvy 语法、常见 API(2) gradle

一盆绿萝 发表了文章 • 776 次浏览 • 2021-04-19 15:04 • 来自相关话题

Gradle 安装 上文书 Gradle 运行在 JVM 之上, 因此需要 JDK1.8 或以上 java 环境 1. 下载 Gradle 版本 从 Gradle 官方上下载,地址:Gradle 官网下载地址,选择 .all 的包下载,我下的是 6.6.1,尽... ...查看全部
1
评论

Gradle 爬坑指南 -- 概念初解、Grovvy 语法、常见 API(1) gradle

一盆绿萝 发表了文章 • 804 次浏览 • 2021-04-19 15:02 • 来自相关话题

理解 Gradle、Groovy 对于拦路虎、大 Boss,理论先于实际。手握理论的浮尘,方能遇坑过坑、遇水搭桥 (๑•̀ㅂ•́)و✧ 1. 什么是构建工具 简单的说就是自动化的编译、打包程序 我们来回忆一下,入门 java 那会,大家都写过 Hello Wr... ...查看全部
0
评论

iOS 音视频编解码基本概念 iOS开发

zuyu 发表了文章 • 843 次浏览 • 2021-04-19 14:07 • 来自相关话题

来看看视频里面到底有什么内容元素:图像(Image)⾳频(Audio)元信息(Metadata)编码格式: • Video: H264Audio: AAC视频相关基础概念1.视频文件格式相信大家平时接触的word文件后面带的.doc,图片后缀带有.png/.j... ...查看全部
0
评论

iOS Cateogry的深入理解 iOS开发

zuyu 发表了文章 • 773 次浏览 • 2021-04-19 14:04 • 来自相关话题

首先先看几个面试问题Cateogry里面有load方法么? load方法什么时候调用?load方法有继承么?1. 新建一个项目,并添加TCPerson类,并给TCPerson添加两个分类2.新建一个TCStudent类继承自TCPerson,并且给T... ...查看全部
0
评论

iOS Cateogry的深入理解&&initialize方法调用理解 iOS开发

zuyu 发表了文章 • 724 次浏览 • 2021-04-19 13:54 • 来自相关话题

上一篇文章我们讲到了load方法,今天我们来看看initialize新建项目,新建类   类结构图如下将原来的load方法换成initialize先告诉大家initialize方法调用的时间,以便大家带着答案去理解initialize:在类第一次接收... ...查看全部
1
评论

深度探索 Gradle 自动化构建技术(二、Groovy 筑基篇)(3) gradle

一盆绿萝 发表了文章 • 803 次浏览 • 2021-04-16 14:05 • 来自相关话题

四、文件处理 1、常规文件处理 1)、读文件 eachLine 方法 我们可以使用 eachLine 方法读该文件中的每一行,它唯一的参数是一个 Closure,Closure 的参数是文件每一行的内容。示例代码如下所示: def file = new Fil... ...查看全部
1
评论

深度探索 Gradle 自动化构建技术(二、Groovy 筑基篇)(2) gradle

一盆绿萝 发表了文章 • 784 次浏览 • 2021-04-16 14:05 • 来自相关话题

三、Groovy 基础语法Groovy 的基础语法主要可以分为以下 四个部分:1)、Groovy 核心基础语法。2)、Groovy 闭包。3)、Groovy 数据结构。4)、Groovy 面向对象1、Groovy 核心基础语法Groovy 中的变量变... ...查看全部
1
评论

深度探索 Gradle 自动化构建技术(二、Groovy 筑基篇)(1) gradle

一盆绿萝 发表了文章 • 837 次浏览 • 2021-04-16 11:41 • 来自相关话题

前言 成为一名优秀的Android开发,需要一份完备的 知识体系,在这里,让我们一起成长为自己所想的那样~。 Groovy 作为 Gradle 这一强大构建工具的核心语言,其重要性不言而喻,但是 Groovy 本身是十分复杂的,要想全面地掌握它,我想几十篇万字... ...查看全部
1
评论

"Gradle"系列: 一、Gradle相关概念理解,Groovy基础(4) gradle

一盆绿萝 发表了文章 • 824 次浏览 • 2021-04-15 15:35 • 来自相关话题

五、Groovy数据结构 通过这个模块的学习,我会结合具体的例子来说明如何查阅文档来确定闭包中的参数,在讲 Map 的时候我会讲到 Groovy 常用的数据结构有如下 四种: 1)、数组 2)、List 3)、Map 4)、Range 1、数组 在 Gro... ...查看全部
1
评论

"Gradle"系列: 一、Gradle相关概念理解,Groovy基础(3) gradle

一盆绿萝 发表了文章 • 834 次浏览 • 2021-04-15 15:31 • 来自相关话题

四、Groovy 闭包 在 Groovy 中,闭包非常的重要,因此单独用一个模块来讲 1、闭包定义 引用 Groovy 官方对闭包的定义:A closure in Groovy is an open, anonymous, block of code that... ...查看全部
1
评论

"Gradle"系列: 一、Gradle相关概念理解,Groovy基础(2) gradle

一盆绿萝 发表了文章 • 925 次浏览 • 2021-04-15 15:30 • 来自相关话题

三、Groovy 基础语法 再次强调 Groovy 是基于 java 扩展的动态语言,直接写 java 代码是没问题的,既然如此,Groovy 的优势在哪里呢? 在于 Groovy 提供了更加灵活简单的语法,大量的语法糖以及闭包特性可以让你用更少的代码来实现和... ...查看全部
1
评论

"Gradle"系列: 一、Gradle相关概念理解,Groovy基础(1) gradle

一盆绿萝 发表了文章 • 907 次浏览 • 2021-04-15 15:28 • 来自相关话题

前言 引用 Gradle 官方一段对Gradle的介绍:Gradle is an open-source build automation tool focused on flexibility and performance. Gradle build sc... ...查看全部
0
评论

协程+Retrofit 让你的代码足够优雅 retrofit 协程 Android

维生素C 发表了文章 • 816 次浏览 • 2021-04-14 15:04 • 来自相关话题

目标 简单起见,我们使用 Github 官方的 Api,查询官方返回的仓库列表。 如果你学习过官方 Paging Demo 的源码,会发现这份代码很熟悉,因为这份代码很大一部分来自这个Demo。 一、引入依赖 协程和 Retrofit 的版本:dependen... ...查看全部
0
评论

Jetpack新成员,Paging3从吐槽到真香 jetpack Android

维生素C 发表了文章 • 1255 次浏览 • 2021-04-14 15:01 • 来自相关话题

各位小伙伴们大家早上好。 随着Android 11的正式发布,Jetpack家族也引入了许多新的成员。我之前有承诺过,对于新引入的App Startup、Hilt、Paging 3,我会分别写一篇文章进行介绍。 现在,关于App Start和Hilt的文章我都... ...查看全部
0
评论

Android 常见的错误日志及相应的解决方案总结 错误 Android

维生素C 发表了文章 • 1821 次浏览 • 2021-04-14 14:51 • 来自相关话题

之前整理过一些关于常见的错误日志,基于生产的bug日志系统,我这边会不间断的更新错误日志及相应的解决方案,抛砖引玉(PS:也许解决的方法有点菜,希望大家能给出更优的解决方案及意见反馈,非常欢迎,相互学习共同进步) android.view.WindowMana... ...查看全部
0
评论

错过了金三银四,还不赶紧准备金九银十?这份Android大厂面试大纲静下心应对,九月就是你的战场! 面试题 Android

维生素C 发表了文章 • 826 次浏览 • 2021-04-14 14:44 • 来自相关话题

感悟这个世界有一个“二八原则”在好多地方都发挥着作用,在Android开发上我认为也一样有用。做为一名Android开发者,你也许只会用到Android开发知识中的20%,有80%其实你学了也不一定会用。而面试官也一样,他也可能只掌握了20%的知识,而且一个面... ...查看全部
0
评论

Material Design实战之可折叠式标题栏 Material Design Android

柳天明 发表了文章 • 1088 次浏览 • 2021-04-14 11:40 • 来自相关话题

CollapsingToolbarLayout1.基本介绍CollapsingToolbarLayout是一个作用于Toolbar基础之上的布局,它可以让Toolbar的效果变得更加丰富,不仅仅是展示一个标题栏,还可以实现更加华丽的效果注意:Collapsin... ...查看全部
1
评论

Android Handler消息传递机制 Android

可口可乐 发表了文章 • 918 次浏览 • 2021-04-13 14:37 • 来自相关话题

Android中只允许UI线程(也就是主线程)修改Activity里的UI组件。实际开发中,新启动的线程需要周期性地改变界面组件的属性值就需要借助Handler的消息传递机制。Handler类Handler类的主要作用:在新启动的线程中发送消息在主线程中获取、... ...查看全部
1
评论

Android三方库glide的使用 Android

可口可乐 发表了文章 • 1771 次浏览 • 2021-04-13 14:33 • 来自相关话题

glideGlide 是一个图片加载库,跟它同类型的库还有 Picasso、Fresco、Universal-Image-Loader 等。glide库的优点:加载类型多样化:Glide 支持 Gif、WebP 等格式的图片。生命周期的绑定:图片请求与页面生命... ...查看全部
1
评论

Android三方库OKHTTP请求的使用 网络请求 Android

可口可乐 发表了文章 • 1023 次浏览 • 2021-04-13 14:29 • 来自相关话题

okhttpOkhttp是网络请求框架。OkHttp主要有Get请求、Post请求等功能。使用前,需要添加依赖,在当前项目的build.gradle下加入以下代码:implementation 'com.squareup.okhttp3:okhttp:3.5.... ...查看全部
1
评论

即学即用Android Jetpack - Navigation Navigation jetpack

可口可乐 发表了文章 • 890 次浏览 • 2021-04-13 14:16 • 来自相关话题

前言 即学即用Android Jetpack系列Blog的目的是通过学习Android Jetpack完成一个简单的Demo,本文是即学即用Android Jetpack系列Blog的第一篇。 记得去年第一次参加谷歌开发者大会的时候,就被Navigation的... ...查看全部
1
评论

Android日记之View的绘制流程(二) Android

维生素C 发表了文章 • 923 次浏览 • 2021-04-12 15:25 • 来自相关话题

Android日记之View的绘制流程(一)Measure过程Measure过程要分情况来看,如果只是原始的View,那么通过measure()方法就完成了测量的过程。如果是一个ViewGroup,除了完成自己的测量过程外,还要遍历去调用子元素的measure... ...查看全部
1
评论

Android日记之View的绘制流程(一) Android

维生素C 发表了文章 • 874 次浏览 • 2021-04-12 15:23 • 来自相关话题

前言 View的绘制流程,其实也就是工作流程,指的就是Measure(测量)、Layout(布局)和Draw(绘制)。其中,measure用来测量View的宽和高,layout用来确定View的位置,draw则用来绘制View,这里解析的Android SDK... ...查看全部
1
评论

Android日记之线程池 Android

维生素C 发表了文章 • 889 次浏览 • 2021-04-12 15:10 • 来自相关话题

前言 在编程中经常会使用线程来异步处理任务,但是每个线程的创建和销毁都需要一定的开销。如果每次执行一个任务都需要一个新进程去执行,则这些线程的创建和销毁将消耗大量的资源;并且线程都是“各自为政”的,很难对其进行控制,更何况有一堆的线程在执行。这时候就需要线程池... ...查看全部
1
评论

揭开 LiveData 的通知机制的神秘面纱 Android

可口可乐 发表了文章 • 944 次浏览 • 2021-04-09 14:27 • 来自相关话题

LiveData 和 ViewModel 一起是 Google 官方的 MVVM 架构的一个组成部分。巧了,昨天分析了一个问题是 ViewModel 的生命周期导致的。今天又遇到了一个问题是 LiveData 通知导致的。而 ViewModel 的生命周期和 ... ...查看全部
1
评论

揭开 ViewModel 的生命周期控制的神秘面纱 Android

可口可乐 发表了文章 • 1025 次浏览 • 2021-04-09 14:23 • 来自相关话题

1、从一个 Bug 说起想必有过一定开发经验的同学对 ViewModel 都不会陌生,它是 Google 推出的 MVVM 架构模式的一部分。这里它的基础使用我们就不介绍了,毕竟这种类型的文章也遍地都是。今天我们着重来探讨一下它的生命周期。起因是这样的,昨天在... ...查看全部
1
评论

一文说透 Android 应用架构 MVC、MVP、MVVM 和 组件化 Android

可口可乐 发表了文章 • 1212 次浏览 • 2021-04-09 14:17 • 来自相关话题

MVC、MVP 和 MVVM 是常见的三种架构设计模式,当前 MVP 和 MVVM 的使用相对比较广泛,当然 MVC 也并没有过时之说。而所谓的组件化就是指将应用根据业务需求划分成各个模块来进行开发,每个模块又可以编译成独立的APP进行开发。理论上讲,组件化和... ...查看全部
1
评论

今日头条屏幕适配方案终极版正式发布! Android

一盆绿萝 发表了文章 • 1078 次浏览 • 2021-04-08 14:13 • 来自相关话题

前言 我在前面两篇文章中详细介绍了 今日头条适配方案 和 SmallestWidth 限定符适配方案 的原理,并验证了它们的可行性,以及总结了它们各自的优缺点,可以说这两个方案都是目前比较优秀、比较主流的 Android 屏幕适配方案,而且它们都已经拥有了一定... ...查看全部
1
评论

骚年你的屏幕适配方式该升级了!-SmallestWidth 限定符适配方案 Android

一盆绿萝 发表了文章 • 1038 次浏览 • 2021-04-08 14:07 • 来自相关话题

前言 ok,根据上一篇文章 骚年你的屏幕适配方式该升级了!-今日头条适配方案 的承诺,本文是这个系列的第二篇文章,这篇文章会详细讲解 smallestWidth 限定符屏幕适配方案 了解我的朋友一定知道,MVPArms 一直使用的是 鸿神 的 AndroidA... ...查看全部
1
评论

骚年你的屏幕适配方式该升级了!-今日头条适配方案 Android

一盆绿萝 发表了文章 • 1170 次浏览 • 2021-04-08 14:05 • 来自相关话题

前言 这个月在 Android 技术圈中 屏幕适配 这个词曝光率挺高的,为什么这么说呢?因为这个月陆续有多个大佬发布了屏幕适配相关的文章,公布了自己认可的屏幕适配方案 上上个星期 Blankj 老师发表了一篇力挺今日头条屏幕适配方案的 文章,提出了很多优化的方... ...查看全部