注册
环信即时通讯云

环信即时通讯云

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

环信开发文档

环信FAQ

环信FAQ

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

RTE开发者社区

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

技术讨论区

技术交流、答疑
资源下载

资源下载

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

iOS Library

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

Android Library

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

Android 热修复核心原理,ClassLoader类加载 ClassLoader Android

技术精选柳天明 发表了文章 • 776 次浏览 • 2021-10-14 11:34 • 来自相关话题

Android 热修复核心原理,ClassLoader类加载[TOC]Android前沿技术探讨:ClassLoader在热修复中的应用又在写bug?这句话虽然是句玩笑话,但是也正因为我们是人不是神,但也不能面面俱到,什么都考虑完美,出现bug是不可避免的。那... ...查看全部
0
评论

分析应用程序启动 性能优化 Android

技术精选柳天明 发表了文章 • 1179 次浏览 • 2021-10-14 11:33 • 来自相关话题

一旦我们建立了触发应用程序缓慢启动的指标和场景,下一步就是提高性能。要了解是什么导致应用程序启动缓慢,我们需要对其进行分析。 Android Studio 提供了几种类型的分析器录制配置:Trace System Calls(又名 systrace、perfe... ...查看全部
0
评论

adb 如何衡量应用启动 启动耗时 Android

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

可以利用 ActivityTaskManager 的输出来获取应用程序启动持续时间。每当 Activity 启动时,都会在 logcat 输出中看到类似的内容:ActivityTaskManager: Displayed com.android.samples... ...查看全部
0
评论

Android入门教程 | Fragment 基础概念 fragment Android

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

什么是Fragment?Fragment,直译为“碎片”,“片段”。 Fragment 表示 FragmentActivity 中的行为或界面的一部分。可以在一个 Activity 中组合多个片段,从而构建多窗格界面,并在多个 Activity 中重复使用某个... ...查看全部
0
评论

Android 点击响应时间 View绘制 Android

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

Android 用户希望应用能够在短时间内响应他们的操作。UX 研究告诉我们,响应时间短于 100 毫秒会让人感觉立竿见影,而超过 1 秒的响应时间会让用户失去注意力。 当响应时间接近 10 秒时,用户只需放弃他们的任务。测量用户操作响应时间对于确保良好的用户... ...查看全部
0
评论

学不好Lambda,能学好Kotlin吗 Lambda kotlin

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

嗯,当然 不能 进入正题,Kotlin中,高阶函数的身影无处不在,听上去高端大气上档次的高阶函数,简化一点讲,其实就是Lambda + 函数。 如果,Lambda学不好,就会导致高阶函数学不好,就会导致协程等等一系列的Kotlin核心学不好,Kotlin自然就... ...查看全部
0
评论

Flutter开发·Stream的理解与简单使用 stream

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

介绍 Stream和Future都是在Flutter中常用来处理异步事件的对象,与Future只能处理单次异步操作不同的是,Stream具有多次响应异步事件监听的功能,是一系列异步事件的序列。 分类 Stream从订阅模式上分可以分为两类,一个是单订阅模式,另... ...查看全部
0
评论

Flutter输入框获取剪切板-合规问题踩坑 Flutter

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

前言:公司法务部检测出Flutter开发的App存在未同意隐私协议先获取系统剪切板数据的问题,要求整改。经过一系列调试后,定位到原来是Flutter输入框的坑,只要使用到输入框,就会先获取下剪切板数据。还没有属性可以关闭,着实踩坑,以下记录分享给大家,希望能稳... ...查看全部
0
评论

【辨析】Compose 完全脱离 View 系统了吗? compose

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

前言 Compose正式发布1.0已经相当一段时间了,但相信很多同学对Compose还是有很多迷惑的地方 Compose跟原生的View到底是什么关系?是跟Flutter一样完全基于Skia引擎渲染,还是说还是View的那老一套? 相信很多同学都会有下面的疑问... ...查看全部
0
评论

Android 程序崩溃之快速锁定! 崩溃

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

前言 从刚开始接触Android开发,第一次发版,遇到程序崩溃,那就一个慌张。好几年过去了,现在的听到程序崩溃?嗯,稍等我看看什么问题,然后该锁定该锁定该解决解决。 发版前减少bug、崩溃等,发版后遇到bug、崩溃也不要慌张,毕竟 bug不 会因为你的慌张而自... ...查看全部
0
评论

Java 内存模型 内存模型 Android

技术精选柳天明 发表了文章 • 851 次浏览 • 2021-10-13 14:44 • 来自相关话题

运行时的数据区(Runtime Data Area)本文主要看 JVM 内存模型主要指运行时的数据区,包括 5 个部分,如下图所示。虚拟机栈:也叫方法栈,是线程私有的,线程在执行每个方法时,JVM 都会在虚拟机栈中创建一个栈帧,用来存储局部变量表、操作栈、动态... ...查看全部
0
评论

Java 类加载器 源码 Android

技术精选柳天明 发表了文章 • 847 次浏览 • 2021-10-13 14:44 • 来自相关话题

类加载器 ClassLoader。在Java 内存模型我们介绍了 Java 字节码文件(.class)的格式。一个完整的 Java 程序是由多个 .class 文件组成的,在程序运行过程中,需要将这些 .class 文件加载到 JVM 中才可以使用。而负责加载... ...查看全部
0
评论

Java 垃圾回收(GC) 虚拟机 Android

技术精选柳天明 发表了文章 • 823 次浏览 • 2021-10-13 14:43 • 来自相关话题

前言垃圾回收(Garbage Collection,简写为 GC)可能是虚拟机众多知识点中最为大众所熟知的一个了,也是Java开发者最关注的一块知识点。Java 语言开发者比 C 语言开发者幸福的地方就在于,我们不需要手动释放对象的内存,JVM 中的垃圾回收器... ...查看全部
0
评论

Java多线程5 Callable、Future 和FutureTask 多线程 Android

技术精选柳天明 发表了文章 • 798 次浏览 • 2021-10-13 14:42 • 来自相关话题

前言创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦。而自从Ja... ...查看全部
0
评论

Java虚拟机系列五:android虚拟机 虚拟机 Android

技术精选柳天明 发表了文章 • 1590 次浏览 • 2021-10-13 14:42 • 来自相关话题

一.android虚拟机与hotspot虚拟机的区别android虚拟机非标准jvm实现存储和执行dex文件采用基于寄存器的指令集指令长度为2,4,6个字节,执行指令效率高,移植性差,依赖于平台hotspot虚拟机标准jvm实现存储和执行class文件采用基于... ...查看全部
0
评论

Android Jetpack系列之ViewModel jetpack ViewModel Android

技术精选柳天明 发表了文章 • 761 次浏览 • 2021-10-12 16:04 • 来自相关话题

ViewModel介绍ViewModel的定义:ViewModel旨在以注重生命周期的方式存储和管理界面相关的数据。ViewModel本质上是视图(View)与数据(Model)之间的桥梁,想想以前的MVC模式,视图和数据都会写在Activity/Fragme... ...查看全部
0
评论

Android内存泄露检测之LeakCanary的使用(转) leakCanary Android

技术精选柳天明 发表了文章 • 1020 次浏览 • 2021-10-12 16:03 • 来自相关话题

LeakCanary github地址:square.github.io/leakcanary/开始使用目前为止最新的版本是2.3版本,相比于2.0之前的版本,2.0之后的版本在使用上简洁了很多,只需要在dependencies中加入LeakCanary的依赖... ...查看全部
0
评论

❤️ Android 源码解读-startActivity(含启动新应用)❤️ 源码阅读 Android

技术精选柳天明 发表了文章 • 949 次浏览 • 2021-10-12 16:02 • 来自相关话题

开局一张图源码版本:Android 11(SDK 30)涉及到的类Instrumentation:负责 Application 和 Activity 的建立和生命周期控制。ActivityTaskManager:此类提供... ...查看全部
2
评论

【奇淫技巧】解锁X5内核WebView同层渲染能力 webview x5 Android

技术精选柳天明 发表了文章 • 2398 次浏览 • 2021-10-12 16:01 • 来自相关话题

前言WebView同层渲染,并不是一个新技术,国内一线互联网产品广泛应用,比如小程序的原生组件,电商H5嵌原生播放器等场景;如果您了解其原理,会发现这玩意在Android端,需要修改浏览器内核才能搞定,所以上手难度高;以至于读完文章,心血澎湃直呼牛逼,但是回过... ...查看全部
0
评论

Android Activity/Window/View 的background background Android

技术精选柳天明 发表了文章 • 936 次浏览 • 2021-10-12 15:59 • 来自相关话题

前言Activity/Window/View 的background,平时接触最多的就是View的background,Activity的background次之,最后用的较少的是Window的background,这三者有什么关联、区别呢?通过本篇文章,你将... ...查看全部
0
评论

❤️Android 安装包体积优化❤️ 优化

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

介绍 实际开发应用时,包体积优化是必不可少的。毕竟手机内存有限,如果包体积过大很多用户会直接放弃(以前手机内存很小的时候,这个真的很重要),现在由于手机内存大了(512G已经挡不住了),现在的用户更关注流畅度和美观作为参考,但是该有的优化还是要优化的,毕竟要尽... ...查看全部
0
评论

重新理解为什么 Handler 可能导致内存泄露? handler

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

总说 Handler 使用不当会导致内存泄露,真正的原因到底是什么? 网上千篇一律的答案貌似没有说到点子上,本文带你重新理解个中细节! 什么是 Handler 使用不当? 先搞清楚什么叫 Handler 使用不当? 一般具备这么几个特征: Handler 采... ...查看全部
0
评论

Kotlin开发中的一些Tips kotlin

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

如果你开始使用Kotlin,我个人的建议是多关注编译后字节码或是反编译后的java代码,这样你会发现更多的细节。单纯只学习语法会让你忽略一些细节,而这可能会是性能问题或bug的来源。 下面我举一些我在使用中碰到的问题,看能否给你启发,想到哪就写到哪了。本篇内容... ...查看全部
0
评论

flutter 风车加载指示组件 Flutter

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

前言Flutter 官方提供了诸如 CircularProgressIndicator和 LinearProgressIndicator两种常见的加载指示组件,但是说实话,实在太普通,比如下面这个CircularProgressIndica... ...查看全部
0
评论

kt协程 | suspend非阻塞挂起魔术解密 kotlin

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

一 前言 kotin协程,一种轻量级用户态线程,能通过suspend函数避免回调地狱以及快速实现线程的切换等,已经普及到大量实际项目中。这里将解析协程核心功能suspend的「非阻塞式挂起」实现原理,从而避免管中窥豹,使得在后续使用kotlin协程开发能更加得... ...查看全部
0
评论

java中的IO、NIO、Okio socket Android

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

java IO写这种写方法只能一个字节一个字节的写;注意把要关闭的流写在try括号中,省去了代码中finally关闭的过程,以下例子均是。private static void ioWrite() { try (OutputStream outputS... ...查看全部
0
评论

ARouter 拦截器之多 module 独立运行 arouter Android

技术精选柳天明 发表了文章 • 756 次浏览 • 2021-10-11 14:05 • 来自相关话题

本文说明上篇文章 已分享了路由配置、跳转、原理、完整的效果演示gif以及源码,而且是多 module 项目演示的,算是路由 ARouter 的入门,还没配置使用的可以先去看看。本文的内容主要涉及如下两个:路由拦截器使用module 独立运行前者在我们... ...查看全部
0
评论

Android Jetpack系列之Lifecycle lifecycle Android

技术精选柳天明 发表了文章 • 673 次浏览 • 2021-10-11 14:04 • 来自相关话题

Lifecycle介绍Lifecycle可以让某一个类变成Activity、Fragment的生命周期观察者类,监听其生命周期的变化并可以做出响应。Lifecycle使得代码更有条理性、精简、易于维护。Lifecycle中主要有两个角色:LifecycleOw... ...查看全部
0
评论

做一个透明的Dialog Activity dialog Android

技术精选柳天明 发表了文章 • 1027 次浏览 • 2021-10-11 14:02 • 来自相关话题

做一个透明的Dialog Activity平时在很多软件中,肯定见到过从底部的弹窗,比如分享某个文件,从底部弹出的分享平台,大部分是通过PopupWindow 底部弹出实现,这次来讲一个不一样的。1. 什么是 Dialog Activity让Acti... ...查看全部
0
评论

Java多线程2 多个线程之间共享数据 kotlin Android

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

线程范围的共享变量多个业务模块针对同一个static变量的操作 要保证在不同线程中 各模块操作的是自身对应的变量对象public class ThreadScopeSharaData { private static int data = 0 ; ... ...查看全部
0
评论

Kotlin是如何帮助你避免内存泄漏的? kotlin

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

本文的代码位置在github.com/marcosholga…中的kotlin-mem-leak分支上。 我是通过创建一个会导致内存泄漏的Activity,然后观察其使用Java和Kotlin编写时的表现来进行测试的。 其中Java代码如下: public c... ...查看全部
0
评论

建议收藏!!Flutter状态管理插件哪家强?请看岛上码农的排行榜! 状态管理 Flutter

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

前言一路下来,Flutter 状态管理相关的文章写了有几十篇了,这是本人也没想到的结果。Flutter 的状态管理插件实在太多,感觉要深挖,可以继续写上几十篇。只是,这样写,怕是自己不累,看客都累了!😂😂😂授人以鱼不如授人以渔,本篇就专门对 Flutter 比... ...查看全部
0
评论

更高级的 Android 启动任务调度库 任务调度

Android Library王二蛋和他的张大花 发表了文章 • 1132 次浏览 • 2021-10-11 09:48 • 来自相关话题

在之前的文章中,我介绍了自研的 Android 启动任务调度工具 AndroidStartup。近期,因为在组件化项目中运用该项目的需要,我对这个库做了一番升级。在最新的 2.2 版本中,我新增了一些特性。相比于目前市面上其他的启动任务调度库,使其具备了更多的... ...查看全部
0
评论

Flutter 入门与实战(九十三):使用 Animation 构建爱心三连动画 Flutter Animation

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

前言 我们开始 Flutter 动画相关篇章之旅,在应用中通过动效能够给用户带来更愉悦的体验,比较典型的例子就是一些直播平台的动效了,比如送火箭能做出来那种火箭发射的动效——感觉倍有面子,当然这是土豪的享受,我等码农只在视频里看过😂😂😂。本篇我们来介绍基于 A... ...查看全部
0
评论

RxHttp + Flow 三步搞定任意请求 RxHttp flow

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

1、前言 RxHttp 在之前的版本中,已提供了RxHttp + Await协程、RxHttp + RxJava两种请求方式,这一次,RxHttp 无缝适配了 Flow , RxHttp + Flow协程配合使用,使得请求更加简单,至此,RxHttp已集齐3架... ...查看全部
0
评论

了解Parcelable存在的意义 序列化 Android

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

Parcelable是Google团队专门为Android设计的序列化类,那在Java中已经有了Serializable序列化为什么还需要Parcelable呢?我们接下来就通过阅读Parcelable的实现类和源码来比较它们的区别,建议先对Serializa... ...查看全部
0
评论

高级UI事件分发、事件冲突处理 事件分发 Android

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

一、MotionEvent介绍二、事件的接收流程。可根据之前的结成介绍找到入口。viewRootImpl会对事件进行处理,首先找到DecorView,然后再找到activity再在dispatchTouchEvent()里处理。setView@ViewRoot... ...查看全部
0
评论

Android WebView H5 秒开方案总结 Android webview

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

为了满足跨平台和动态性的要求,如今很多 App 都采用了 Hybrid 这种比较成熟的方案来满足多变的业务需求。Hybrid 也叫混合开发,即半原生半 H5 的方式,通过 WebView 来实现需要高度灵活性的业务,在需要和 Native 做交互或者是调用特定... ...查看全部
0
评论

Flutter怎么样做国际化 Flutter

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

什么是国际化 国际化是指在设计软件时,将软件与特定语言及地区脱钩的过程。当软件被移植到不同的语言地区时,软件本身不用做内部工程上的改变或修正。 本地化则是指当移植软件时,加上与特定区域设置有关的资讯和翻译文件的过程。 国际化和本地化之间的区别虽然微妙,但却很重... ...查看全部
0
评论

Flutter 绘制番外篇 - 圆中取形 绘制

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

前言: 对一些有趣的绘制 技能和知识, 我会通过 [番外篇] 的形式加入《Flutter 绘制指南 - 妙笔生花》小册中,一方面保证小册的“与时俱进” 和 “活力”。另一方面,是为了让一些重要的知识有个 好的归宿。 一、正 N 边形的绘制 1. 正三角形绘制... ...查看全部
0
评论

Android 开发必知必会:Java 并发之三大性质、synchronized、volatile volatile synchronized

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

原子性 原子(atomic) 本意是“不能被进一步分割的最小粒子”,而原子操作(atomic operation) 意为“不可被中断的一个或一系列操作”。原子性则可以表示为:一个操作是不可中断的,要么全部执行成功要么全部执行失败,有着“同生共死”的感觉。 有序... ...查看全部
0
评论

【开源项目】Compose版SmartRefreshLayout,了解一下~ SmartRefreshLayout

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

下拉刷新是我们开发中的常见的需求,官方提供了SwipeRefreshLayout来实现下拉刷新,但我们常常需要定制Header或者Header与内容一起向下滚动,因此SwipeRefreshLayout往往不能满足我们的需求 在使用XML开发时,Github上... ...查看全部
0
评论

优雅地处理运行时权限请求 permission Android

技术精选柳天明 发表了文章 • 1127 次浏览 • 2021-10-08 16:02 • 来自相关话题

前言从android 6.0(API 级别 23)开始,android引入了运行时权限,用户开始在应用运行时向其授予权限,而不是在应用安装时向其授予权限,如果应用的某项功能需要使用到受运行时权限保护的资源(例如相机、位置、麦克风等),但在运行该功能前没有动态地... ...查看全部
0
评论

Android混合开发快速上手入门 混合开发 Android

技术精选柳天明 发表了文章 • 919 次浏览 • 2021-10-08 16:00 • 来自相关话题

一 混合开发简介原生app :java/kotlin 纯原生写出的app;web app:web写出的app;hybird app:原生+web(通过webview)写出的app;当然,现在也有很多第三方混合开发框架以及简便的js桥,但是作为最基础的webvi... ...查看全部
0
评论

Glide源码解析 源码解析 Android

技术精选柳天明 发表了文章 • 918 次浏览 • 2021-10-08 15:59 • 来自相关话题

本次源码解析基于4.12.0,如有描述错误,请大佬们评论指出。一、Glide的用法 // RecyclerView中加载图片 @Override public void onBindViewHolder(PhotoViewHolder holder, int ... ...查看全部
0
评论

Android 架构之OkHttp源码解读(上) https Android

技术精选柳天明 发表了文章 • 1054 次浏览 • 2021-10-08 15:55 • 来自相关话题

前言在我们编写Android程序时,OkHttp已经成为了我们必不可少的部分,但我们往往知道OkHttp怎么用,不知其原理。在本篇中,我将通过如下方式带你深入其原理。OkHttp 介绍OkHttp 调用流程socket 连接池复用机制高并发请求队列:任务分发责... ...查看全部
0
评论

Retrofit解析 retrofit Android

技术精选柳天明 发表了文章 • 1000 次浏览 • 2021-10-08 15:52 • 来自相关话题

本次源码解析基于2.9.0,如有描述错误,请大佬们评论指出。一、Retrofit的作用Retrofit基于okhttp,简化了okhttp请求接口的操作,而且适配Rxjava和kotlin的协程,但目前还没有适配kotlin的Flow,如果要适配,自己封装也是... ...查看全部
0
评论

Android 系统启动流程Init、Zygote、SystemService、ServiceManager 启动耗时 Android

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

Android系统启动流程操作系统本身也是一个程序,只是这个程序是用来管理我们 App 应用程序的。 从系统的角度上来讲,Android系统的启动过程可以分为 bootloader 引导,装载和启动 linux内核,启动Android系统。Android 系统... ...查看全部
0
评论

国庆渐变头像 View绘制 Android

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

国庆五星红旗渐变色头像五星红旗半透明头像教程国旗渐变头像国庆头像 国旗渐变 制作设置教程此生不悔入华夏 祝祖国繁荣昌盛!效果展示缘起群聊的时候, 有人说这个国旗渐变的效果, 我看了一下, 有点帅呢, 就研究了一下环境雷电模拟器: 4.0.63 Android版... ...查看全部
0
评论

Kotlin系列八:静态方法、infix函数、高阶函数的常见应用举例 kotlin

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

一 静态方法 java中定义静态方法只需要在方法前添加static即可; kotlin中有四种方式:object的单例类模式、companion object(可以局部写静态方法)、JvmStatic注解模式、顶层函数模式。 1.1 object 用objec... ...查看全部