注册
环信即时通讯云

环信即时通讯云

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

环信开发文档

环信FAQ

环信FAQ

集成常见问题及答案
RTE开发者社区

RTE开发者社区

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

技术讨论区

技术交流、答疑
资源下载

资源下载

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

iOS Library

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

Android Library

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

反射解决FragmentDialog内存泄露??‍♂️ FragmentDialog

技术精选王二蛋和他的张大花 发表了文章 • 857 次浏览 • 2021-09-28 11:26 • 来自相关话题

怎么引发内存泄露的 这个DialogFragment的内存泄露几年前我就遇到了,但当时也稀里糊涂的,在网上搜索各种办法,看的我也是云里雾里,迷迷糊糊。在查阅大量资料之后,终于明白为什么会导致内存泄露了。 归根到底就是DialogFragment在给Dialog... ...查看全部
0
评论

图解 ArrayDeque 比 LinkedList 快 LinkedList ArrayDeque

技术精选王二蛋和他的张大花 发表了文章 • 1037 次浏览 • 2021-09-28 11:24 • 来自相关话题

接口 Deque 的子类 ArrayDeque ,作为栈使用时比 Stack 快,因为原来的 Java 的 Stack 继承自 Vector,而 Vector 在每个方法中都加了锁,而 Deque 的子类 ArrayDeque 并没有锁的开销。 接口 Dequ... ...查看全部
0
评论

Android -activity的布局加载流程 Activity Android

技术精选柳天明 发表了文章 • 957 次浏览 • 2021-09-27 11:30 • 来自相关话题

Activity 布局加载的流程首先在onCreate通过setContentView设置布局protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstan... ...查看全部
0
评论

设计模式-代理模式(Proxy Pattern) 设计模式 Android

技术精选柳天明 发表了文章 • 847 次浏览 • 2021-09-27 11:29 • 来自相关话题

定义为其他对象提供一种代理以控制对这个对象的访问按照代理的创建时期,代理类可以分为两种: 静态代理:由程序员创建代理类或特定工具自动生成源代码再对其编译。在程序运行前代理类的.class文件就已经存在了。动态代理:在程序运行时运用反射机制动态创建而成... ...查看全部
0
评论

Compose 仅50行代码轻松定制下滑刷新 compose

技术精选王二蛋和他的张大花 发表了文章 • 1445 次浏览 • 2021-09-27 09:24 • 来自相关话题

目前有一个正在进行的 Jetpack Compose中文手册 项目,旨在帮助开发者更好的理解和掌握Compose框架,目前仍还在开荒中,欢迎大家进行关注与加入! 这篇文章由本人撰写,目前文章已经发布到该手册中,欢迎进行查阅。 下滑刷新效果展... ...查看全部
0
评论

Flutter ListView懒加载(滑动不加载,停止滑动加载) ListView Flutter

技术精选王二蛋和他的张大花 发表了文章 • 1560 次浏览 • 2021-09-27 09:22 • 来自相关话题

前言:为了更好的减小网络的带宽,使得列表更加流畅,我们需要了解懒加载,也称延迟加载。 面试真题:flutter如何实现懒加载? 关于上一章的登录界面,各位属实难为我了,我也在求ui小姐姐,各位点点赞给我点动力吧~ 懒加载也叫延迟加载,指的是在长网页中延迟... ...查看全部
0
评论

为什么 Compose 没有布局嵌套问题? compose

技术精选王二蛋和他的张大花 发表了文章 • 903 次浏览 • 2021-09-27 09:21 • 来自相关话题

前言 做过布局性能优化的同学都知道,为了优化界面加载速度,要尽可能的减少布局的层级。这主要是因为布局层级的增加,可能会导致测量时间呈指数级增长。 而Compose却没有这个问题,它从根本上解决了布局层级对布局性能的影响: Compose界面只允许一次测量。这意... ...查看全部
0
评论

Android-activity的启动流程 Activity kotlin Android

技术精选柳天明 发表了文章 • 834 次浏览 • 2021-09-26 15:43 • 来自相关话题

需要结合Application的启动流程。 juejin.cn/post/701209…//查看栈顶可见activity是否正等待 if (normalMode) { try { if (mStackSupervisor.at... ...查看全部
0
评论

Kotlin系列三:空指针检查 kotlin Android

技术精选柳天明 发表了文章 • 794 次浏览 • 2021-09-26 15:41 • 来自相关话题

Android系统上崩溃率最高的异常类型就是空指针异常(NullPointerException)。public void doStudy(Study study) { if (study != null) { study.readBo... ...查看全部
0
评论

Flutter 入门与实战(八十):使用GetX构建更优雅的页面结构 Flutter

技术精选王二蛋和他的张大花 发表了文章 • 1430 次浏览 • 2021-09-26 09:57 • 来自相关话题

前言 App 的大部分页面都会涉及到数据加载、错误、无数据和正常几个状态,在一开始的时候我们可能数据获取的状态枚举用 if...else 或者 switch 来显示不同的 Widget,这种方式会显得代码很丑陋,譬如下面这样的代码: if (PersonalC... ...查看全部
0
评论

落地西瓜视频埋点方案,埋点从未如此简单 埋点

技术精选王二蛋和他的张大花 发表了文章 • 1971 次浏览 • 2021-09-26 09:56 • 来自相关话题

前言 目前,几乎每个商用应用都有数据埋点的需求。你的 App 是怎么做埋点的呢,有遇到让你 “难顶” 的问题吗? 在这篇文章里,我将带你建立数据埋点的基本认识,还会介绍西瓜视频团队的前端埋点方案,最后为你带来我的落地实现 EasyTrack。如果能帮上忙,请... ...查看全部
0
评论

【Flutter 状态管理】第一论: 对状态管理的看法与理解 状态 Flutter

技术精选王二蛋和他的张大花 发表了文章 • 1004 次浏览 • 2021-09-26 09:53 • 来自相关话题

前言 由 编程技术交流圣地[-Flutter群-] 发起的 状态管理研究小组,将就 状态管理 相关相关话题进行为期 两个月 的讨论。小组将于两个月后解散,并发布相关讨论成果。 目前只有内定的 5 个人参与讨论,如果你对状态管理有什么独特的见解,或想参与其中。... ...查看全部
0
评论

Android 高级UI5 画笔Paint的基本用法 View绘制 Android

技术精选柳天明 发表了文章 • 972 次浏览 • 2021-09-24 11:20 • 来自相关话题

1.setStyle(Paint.Style style)设置画笔样式,取值有Paint.Style.FILL :填充内部Paint.Style.FILL_AND_STROKE :填充内部和描边Paint.Style.STROKE :仅描边代码实例:publi... ...查看全部
0
评论

android音视频基础 音视频 Android

技术精选柳天明 发表了文章 • 808 次浏览 • 2021-09-24 11:15 • 来自相关话题

一、编码目的编码的目的:压缩,各种音视频的编码方式就是为了让视频体积更小,有利于存储和传输。编码的核心四想就是去除冗余信息。二、编码思路1.空间冗余图像内部相邻元素之间存在较强的相关性,造成信息的冗余。(一块区域颜色一样)2.时间冗余相邻视频帧具有较大的相关性... ...查看全部
0
评论

Android 是怎么捕捉 java 异常的 异常

技术精选王二蛋和他的张大花 发表了文章 • 682 次浏览 • 2021-09-24 09:48 • 来自相关话题

val default = Thread.getDefaultUncaughtExceptionHandler() Thread.setDefaultUncaughtExceptionHandler { t, e ->    //... ...查看全部
0
评论

Kotlin协程实现原理概述 协程

技术精选王二蛋和他的张大花 发表了文章 • 791 次浏览 • 2021-09-24 09:46 • 来自相关话题

协程的顶层实现-CPS 现有如下代码: fun test(a: Int, b: Int) { // 求和 var result = a + b // 乘以2 result = result shl 1 // 加2 ... ...查看全部
0
评论

Flutter跨进程混合栈渲染的实践——子进程WebView Flutter webview

技术精选王二蛋和他的张大花 发表了文章 • 771 次浏览 • 2021-09-24 09:44 • 来自相关话题

前言 首先祝大家中秋节快乐,而明天又要上班啦~ 哈哈哈。不过,立此之处,国庆可期矣~ 好了,书归正传,在此我想分享一下关于我在Flutter 安卓端的跨进程渲染所做的一些实践。 起因 随着项目不断的迭代,功能日益复杂,内存占用也与日俱增。在压测过程中,app的... ...查看全部
0
评论

Android性能优化—StrictMode的使用 StrictMode Android

技术精选柳天明 发表了文章 • 879 次浏览 • 2021-09-23 14:06 • 来自相关话题

概述StrictMode是Android开发过程中一个必不可缺的性能检测工具,他能帮助开发检测出一些不合理的代码块。策略分类StrictMode分为线程策略(ThreadPolicy)和虚拟机策略(VmPolicy)线程策略(ThreadPolicy)线程策略... ...查看全部
0
评论

写个图片加载框架 imageloader Android

技术精选柳天明 发表了文章 • 692 次浏览 • 2021-09-23 14:03 • 来自相关话题

假如让你自己写个图片加载框架,你会考虑哪些问题?首先,梳理一下必要的图片加载框架的需求:异步加载:线程池切换线程:Handler,没有争议吧缓存:LruCache、DiskLruCache防止OOM:软引用、LruCache、图片压缩、Bitmap像素存储位置... ...查看全部
0
评论

Android 高级UI 事件传递机制 事件分发 Android

技术精选柳天明 发表了文章 • 712 次浏览 • 2021-09-23 13:54 • 来自相关话题

1.View的事件分发流程dispatchTouchEvent():onTouchListener--->onTouch方法onTouchEventonClickListener--->onClick方法ListenerInfo static... ...查看全部
0
评论

Android View post 方法 post

技术精选王二蛋和他的张大花 发表了文章 • 708 次浏览 • 2021-09-23 10:25 • 来自相关话题

解析View.post方法。分析一下这个方法的流程。 说起post方法,我们很容易联想到Handler的post方法,都是接收一个Runnable对象。那么这两个方法有啥不同呢? Handler的post方法 先来简单看一下Handler的post(Runna... ...查看全部
0
评论

【开源项目】简单易用的Compose版StateLayout,了解一下~ StateLayout compose

技术精选王二蛋和他的张大花 发表了文章 • 834 次浏览 • 2021-09-23 10:23 • 来自相关话题

前言 在页面中常常需要展示网络请求状态,以带来更好的用户体验,具体来说通常有加载中,加载失败,加载为空,加载成功等状态. 在XML中我们通常用一个ViewGroup封装各种状态来实现,那么使用Compose该如何实现这种效果呢? 本文主要介绍Compose如何... ...查看全部
0
评论

ViewPager2&TabLayout:拓展出一个文本选中放大效果 TabLayout ViewPager2

技术精选王二蛋和他的张大花 发表了文章 • 1139 次浏览 • 2021-09-23 10:15 • 来自相关话题

ViewPager2正式推出已经一年多了,虽然不如3那样新潮,但是也不如老前辈ViewPager那样有众多开源库拥簇,比如它的灵魂伴侣TabLayout明显后援不足,好在TabLayout自身够硬! ViewPager2灵魂伴侣是官方提供的: com.goog... ...查看全部
0
评论

Dialog 按照顺序弹窗 dialog Android

技术精选柳天明 发表了文章 • 814 次浏览 • 2021-09-22 13:58 • 来自相关话题

背景: 产品需求,在同一个页面弹窗需要按照顺序实现: 利用PriorityQueue现实,支持相同优先级,按插入时间排序,目前仅支持Activity,不支持Fragment代码: DialogPriorityUtil 实现优先级弹窗/** ... ...查看全部
0
评论

kotlin的协程异步,并发(同步) 协程 kotlin

技术精选柳天明 发表了文章 • 3197 次浏览 • 2021-09-22 13:57 • 来自相关话题

一:协程的异步任务private fun task(){ println("currentThread:${Thread.currentThread().name}, time:${System.currentTimeMillis()}, start"... ...查看全部
0
评论

Kotlin中的高阶函数,匿名函数、Lambda表达式 函数 kotlin

技术精选柳天明 发表了文章 • 818 次浏览 • 2021-09-22 13:51 • 来自相关话题

高阶函数、匿名函数与lambda 表达式 Kotlin 函数都是头等的,这意味着它们可以存储在变量与数据结构中、作为参数传递给其他高阶函数以及从其他高阶函数返回。可以像操作任何其他非函数值一样操作函数。 头等函数:头等函数(first-class functi... ...查看全部
0
评论

高仿小米加载动画效果 加载动画

技术精选王二蛋和他的张大花 发表了文章 • 802 次浏览 • 2021-09-22 13:18 • 来自相关话题

前言 首先看一下小米中的加载动画是怎么样的,恩恩~~~~虽然只是张图片,因为录制不上全部,很多都是刚一加载就成功了,一点机会都不提供给我,所以就截了一张图,他这个加载动画特点就是左面圆圈会一直转。 仿照的效果如下: 实现过程 这个没有难度,只是学会一个公式... ...查看全部
0
评论

探究 Kotlin 的隐藏性能开销与避坑指南 性能 kotlin

技术精选王二蛋和他的张大花 发表了文章 • 1084 次浏览 • 2021-09-22 13:16 • 来自相关话题

在 2019 年 Google I/O 大会上,Google 宣布了今后 Android 开发将优先使用 Kotlin ,即 Kotlin-first,随之在 Android 开发界兴起了一阵全民学习 Kotlin 的热潮。之后 Google 也推出了一系列用... ...查看全部
0
评论

Android 弹幕的两种实现及性能对比 | 自定义 LayoutManager 弹幕

技术精选王二蛋和他的张大花 发表了文章 • 1051 次浏览 • 2021-09-22 13:13 • 来自相关话题

引子 上一篇用“动画”方案实现了弹幕效果,自定义容器控件,每一条弹幕都作为其子控件,将子弹幕的初始位置置于容器控件右边的外侧,每条弹幕都通过从右向左的动画来实现贯穿屏幕的平移。 这个方案的性能有待改善,打开 GPU 呈现模式: 原因在于容器控件会提前构建所有... ...查看全部
0
评论

kotlin修炼指南6-Sealed到底密封了啥 Sealed kotlin Android

技术精选柳天明 发表了文章 • 1162 次浏览 • 2021-09-18 17:38 • 来自相关话题

在代码中,我们经常需要限定一些有限集合的状态值,例如:网络请求:成功——失败账户状态:VIP——穷逼VIP——普通工具栏:展开——半折叠——收缩等等。通常情况下,我们会使用enum class来做封装,将可见的状态值通过枚举来使用。enum class Net... ...查看全部
0
评论

flutter 优秀日志库 ulog Flutter ulog

Android Library王二蛋和他的张大花 发表了文章 • 1325 次浏览 • 2021-09-18 15:40 • 来自相关话题

ulog ulog的想法和代码风格,设计方式与 Android logger库几乎无差别,差别在于ulog第一个版本不支持文件打印,但支持动态json库配置 库源码:github.com/smartbackme… v0.0.1只有基础的console打印,后面... ...查看全部
0
评论

LeakCanary源码分析 leakCanary

技术精选王二蛋和他的张大花 发表了文章 • 879 次浏览 • 2021-09-18 09:27 • 来自相关话题

LeakCanary使用 LeakCanary是一个用于Android的内存泄漏检测库.本文从如下四点分析源码 检查哪些内存泄漏 检查内存泄漏的时机 如何判定内存泄漏 如何分析内存泄漏(只有一点点,可能跟没有一样) 内存泄漏误报 1.检查哪些内存泄漏 A... ...查看全部
0
评论

内联函数产生原因和原理 内联函数

技术精选王二蛋和他的张大花 发表了文章 • 822 次浏览 • 2021-09-18 09:25 • 来自相关话题

为什么要内联函数因为: Kotlin为了书写简单,所以引入了lambda。但是: lambda会造成性能消耗。所以: 引入了内联函数来解决这个问题。如何证明lambda书写简单我们来实现个需求,diff一下有lambda和无lambda的代码便知。需求: 实现... ...查看全部
0
评论

相比 XML , Compose 性能到底怎么样? compose

技术精选王二蛋和他的张大花 发表了文章 • 781 次浏览 • 2021-09-18 09:23 • 来自相关话题

前言 最近Compose已经正式发布了1.0版本,这说明谷歌认为Compose已经可以用于正式生产环境了 那么相比传统的XML,Compose的性能到底怎么样呢? 本文主要从构建性能与运行时两个方面来分析Compose的性能,数据主要来源于:Jetpack C... ...查看全部
0
评论

Android知识点之Service(四) service Android

技术精选柳天明 发表了文章 • 984 次浏览 • 2021-09-17 11:32 • 来自相关话题

2、service的生命周期,两种启动模式的区别 (1)、通过startService()方法来启动服务 生命周期:onCreate() -> onStart()或者onStartCommand() -> onDestroy() onStart()... ...查看全部
0
评论

Android知识点之Service(三) service Android

技术精选柳天明 发表了文章 • 1024 次浏览 • 2021-09-17 11:31 • 来自相关话题

(3)、异进程服务启动绑定流程 由(1)和(2)可以知道,无论是启动服务还是绑定服务,最终是通过SystemServer进程中的ActiveServices对象的bringUpServiceLocked方法来执行,bringUpServiceLocked方法是... ...查看全部
0
评论

Android知识点之Service(二) service Android

技术精选柳天明 发表了文章 • 1162 次浏览 • 2021-09-17 11:30 • 来自相关话题

(2)、绑定服务流程(同进程) a、应用内调用到AMS过程 在Activity环境下调用bindService方法 frameworks/base/core/java/android/content/ContextWrapper.java public boo... ...查看全部
0
评论

Android知识点之Service(一) service Android

技术精选柳天明 发表了文章 • 803 次浏览 • 2021-09-17 11:28 • 来自相关话题

1、service 启动流程(Android 11)(1)、启动服务流程(同进程)a、应用内调用到AMS过程在Activity环境下调用startService方法 frameworks/base/core/java/android/content/Conte... ...查看全部
0
评论

Flutter手势探索——原理与实现的背后 Flutter

技术精选王二蛋和他的张大花 发表了文章 • 890 次浏览 • 2021-09-17 09:34 • 来自相关话题

作者:闲鱼技术——子东在日常开发中,手势和事件无处不在,比如在 Flutter 应用中点击一个点赞按钮,长按弹出 BottomSheet 和商品列表的滑动等等都存在事件传递和手势识别,Flutter 内部是如何确定哪个控件响应了事件,事件是如何在控件之间传递的... ...查看全部
0
评论

实践 | Google I/O 应用是如何适配大尺寸屏幕 UI 的? 适配

技术精选王二蛋和他的张大花 发表了文章 • 810 次浏览 • 2021-09-17 09:23 • 来自相关话题

5 月 18 日至 20 日,我们以完全线上的形式举办了 Google 每年一度的 I/O 开发者大会,其中包括 112 场会议、151 个 Codelab、79 场开发者聚会、29 场研讨会,以及众多令人兴奋的发布。尽管今年的大会没有发布新版的 Google... ...查看全部
0
评论

Android Camera了解一下 Camera

技术精选王二蛋和他的张大花 发表了文章 • 939 次浏览 • 2021-09-17 09:19 • 来自相关话题

Camera 演进简介最近在项目中遇到 Camera相关的场景,之前对这块不是很了解,趁机补了一下盲区。Android Camera 相关也是生态碎片化较为严重的一块,Android FrameWorkt提供Camera API来实现拍照与屏幕录制的能力,目前... ...查看全部
0
评论

JetPack——ViewModel简析 jetpack Android

技术精选柳天明 发表了文章 • 1077 次浏览 • 2021-09-16 13:54 • 来自相关话题

简介ViewModel以生命周期的方式存储和管理界面相关的数据。让数据在发生屏幕旋转等配置更改后得以继续留存。同时,可以将数据操作从UI控制器(Activity)里分离出来,这样就只需要Activity控制UI逻辑而无需处理数据业务逻辑。在需要进行一些异步操作... ...查看全部
0
评论

android高仿微信聊天消息列表自由复制文字,双击查看文本内容 textview Android

技术精选柳天明 发表了文章 • 2218 次浏览 • 2021-09-16 13:52 • 来自相关话题

掘金地址 github地址SelectTextHelper打造一个全网最逼近微信聊天消息自由复制,双击查看文本内容框架。 汇聚底层TextView框架、原理并加以整理得出的一个实用的Helper。 仅用两个类实现便实现如此强大的功能,用法也超级简单。... ...查看全部
0
评论

【kotlin从摸索到探究】- delay函数实现原理 delay

技术精选王二蛋和他的张大花 发表了文章 • 1032 次浏览 • 2021-09-16 09:25 • 来自相关话题

简介这片文章主要讲解kotlin中delay函数的实现原理,delay是一个挂起函数。kotlin携程使用过程中,经常使用到挂起函数,在我学习kotlin携程的时候,一些现象让我很是困惑,所以打算从源码角度来逐一分析。说明在分析delay源码实现过程中,由于对... ...查看全部
0
评论

【kotlin从摸索到探究】- 协程的执行流程 协程

技术精选王二蛋和他的张大花 发表了文章 • 827 次浏览 • 2021-09-16 09:23 • 来自相关话题

简介 这篇文章将从源码的角度,分析携程的执行流程,我们创建一个携程,系统是怎么进行调度的,什么时候执行的,是否需要创建新线程等等,带着这些疑问,一起往下看吧。 例子先行 fun main(): Unit = runBlocking { launch {... ...查看全部
0
评论

使用 Kotlin 重写 AOSP 日历应用 日历

技术精选王二蛋和他的张大花 发表了文章 • 903 次浏览 • 2021-09-16 09:21 • 来自相关话题

两年前,Android 开源项目 (AOSP) 应用 团队开始使用 Kotlin 替代 Java 重构 AOSP 应用。之所以重构主要有两个原因: 一是确保 AOSP 应用能够遵循 Android 最佳实践,另外则是提供优先使用 Kotlin 进行应用开发的良... ...查看全部
0
评论

中秋快乐!来看看满眼都是中秋气息的app页面吧~ 中秋

技术精选王二蛋和他的张大花 发表了文章 • 1010 次浏览 • 2021-09-16 09:20 • 来自相关话题

前言:看了很久,大家是真的🐂🍺,月球绕地球都整出来了,那我也来给大家整上花活~然后送上中秋祝福:月儿圆又亮,月饼圆又甜,家家团圆相聚,人人欢心甜蜜,祝你家圆人圆事事圆,中秋愉快! 不妨点个赞啦,看到这篇文章的帅哥~ app中秋的引导界面:(完整效果截图在最后哦... ...查看全部
0
评论

Flutter自适应瀑布流 Flutter

技术精选王二蛋和他的张大花 发表了文章 • 885 次浏览 • 2021-09-15 09:22 • 来自相关话题

前言:在电商app经常会看到首页商品推荐的瀑布流,或者类似短视频app首页也是瀑布流,这些都是需要自适应的,才能给用户带来好的体验 话不多说先上效果图: 根据效果图可以分为四步: 1.图片自适应 2.自适应标签 3.上拉刷新和下拉加载 4.底部的点赞按钮可以... ...查看全部
0
评论

Android 控制 ContentProvider的创建 contentProvider

技术精选王二蛋和他的张大花 发表了文章 • 757 次浏览 • 2021-09-15 09:19 • 来自相关话题

序言 随着app隐私政策的收紧,现在不经过用户同意,就收集敏感信息的行为一旦被检测出来。很容易造成app下架。但是有些SDK的初始化是通过注册ContentProvider实现自动调用其onCreate()方法,来实现无感初始化的。如果SDK在ContentP... ...查看全部
0
评论

不做跟风党,LiveData,StateFlow,SharedFlow 使用场景对比 LiveData StateFlow SharedFlow

技术精选王二蛋和他的张大花 发表了文章 • 1587 次浏览 • 2021-09-15 09:16 • 来自相关话题

Android 常用的分层架构 Android 中加载 UI 数据不是一件轻松的事,开发者经常需要处理各种边界情况。如各种生命周期和因为「配置更改」导致的 Activity 的销毁与重建。 「配置更改」的场景有很多:屏幕旋转,切换至多窗口模式,调整窗口大小... ...查看全部