移动开发

iOS 中为什么更新UI都要放在主线程

分析:首先在子线程中是不能进行UI 更新的,而可以更新的结果只是一个幻像:因为子线程代码执行完毕了,又自动进入到了主线程,执行了子线程中的UI更新的函数栈,这中间的时间非常的短,就让大家误以为分线程可以更新UI。如果子线程一直在运行,则子线程中的UI更新的函数栈 主线程无法获知,即无法更新。 其次因为开辟线程时会获取当前环境,如点击某个按钮,这个按钮响应的方法是开辟一个子线程,在子线程中对该按钮进

Android卡顿监控

实现思路 卡顿监控主要监控:慢方法的监控、ANR的监控、掉帧的监控。其实现方案主要有三种: Looper的Printer在消息执行前后的打印,计算出消息执行时间。 利用Choreographer向其注册CALL_BACK, 监听Vsync的开始从而得到上一帧的执行时间。 利用插桩的方法计算每个方法的执行时间。 比如对慢方法、ANR的监控,则是对主线程的Looper的消息的监听,对掉

Xcode14.3打包的APP在iOS13.x上启动崩溃闪退

Xcode14.3 ,iOS13.6.1, iOS13.6, iOS13.3, iOS13.x 今天用Xcode 14.3打包安装在iOS 13.x的手机启动崩溃,但是连着Xcode调试时没有问题,不连着Xcode14.3时启动APP就闪退。 从苹果官网看到也有不少人遇到,但是没有具体的解决方案。 目前从以下几点处理这个问题: 1.降级Xcode到14.2打包可解决该问题 2.app 最低目标版

iOS关联对象objc_setAssociatedObject探讨

主要函数为: //为给定的对象设置一个关联值 public func objc_setAssociatedObject(_ object: Any, _ key: UnsafeRawPointer, _ value: Any?, _ policy: objc_AssociationPolicy) //返回与给定键的给定对象关联的值 public func objc_getAssociatedObj

adb shell input text不能输入中文的解决方案

原因 adb默认是不支持Unicode编码的,无法通过adb shell input text 命令输入中文到手机或者模拟器。 解决步骤 1、安装ADBKeyBoard.apk文件(直接搜索就能找到) 打开手机或模拟器,adb install ADBKeyBoard.apk安装该输入法 在手机上直接安装也可 2、设置默认输入法 打开手机设置 -> 点击语法与输入法 -> 点击输入法管

Dart简介4--异步支持

说明 在很多语法中,回调处理异步任务是很常见的操作,然而回调多了是一件很老火的事情。Dart给了我们很友好的方式,可以允许我们写出和同步代码很像的异步代码。 1,Future Future一个异步操作的最终完成(或失败)及其结果值的表示。简单来说,它就是用于处理异步操作的,异步处理成功了就执行成功的操作,异步处理失败了就捕获错误或者停止后续操作。一个Future只会对应一个结果,要么成功,要

RecyclerView卡顿案例和解决方案

记录一次RecyclerView卡顿案例和解决方案。 需求:界面由两部分组成,顶部一个图片,图片下面是列表。在列表滑动时,图片跟着滑动。 实现:NestedScrollView [ LinearLayout [ ImageView , RecyclerView ] ]。 结果:当数据量较大时,RecyclerView 会越划越卡。 原因:NestedScrollView 嵌套 RecyclerVi

Glide源码分析之加载图片URL

简介 Glide 作为Android开发过程中常见的图片加载工具,在我们日常开发中用到到越来越多.但是个人也只是停留在用的状态.最近时间充裕简单的梳理了一下Glide 加载网络图的流程 流程 1.1 Glide.with(content) 得到RequestManagerRetriever初始化了RequestManager和Glide. @NonNull public static Reque