- 博客(34)
- 收藏
- 关注
原创 stateflow源代码详解
参数是一个函数式接口,用于调用我们定义的表达式,suspend的修饰符说明这个函数必须在协程里面执行。最后一段是启动一个挂起函数,挂起当前的while循环,如果有新数据过来,通知挂起函数完成可以继续执行循环获取数据。哎呀,只是一个接口,我们右键 go to implementations。// 隐藏加载,展示数据。调用我们定义的表达式,emit是一个挂起函数。这是一个很申请的定义哦,ai问出来的结果是。构造函数的参数不能为空,所以必须有初始值。我们不必细究,总之就是保证线程安全。我们通常抓取流的做法是。
2025-11-19 14:50:20
855
原创 okhttp建造者模式详解
这里的this对象的类型是Builder,然后把Builder对象传递给OkHttpClient进行构建。符合对象构造参数多(尤其是可选参数多)特点,通过final的修饰参数,来保证线程安全。原来每次设置参数都会返回当前build对象的this指针,当前对象像个链条传个下一个设置参数的函数。,并将对象的构造过程与其表示分离,使得同样的构建过程可以创建不同的表示。这个回答很模糊,我们来看看okhttp的源代码中定义从参数。先看connectTimeout。建造者模式的官方回答是。我们常见的构造方式是。
2025-11-19 13:58:48
1008
原创 stateflow和shareflow的区别
专为持有和分发 “单一状态” 设计(如 UI 状态、用户信息、计数器值等)。它的核心是 “始终持有最新的状态值”,并确保新观察者能立即获取当前状态。无论何时注册观察者,都会先收到这个最新值(这是 “状态” 的核心需求:新观察者需要知道当前状态)。更新是 “覆盖式” 的:新值会直接替换旧值,观察者只会收到最新的结果(适合状态的 “当前快照”)。是 “追加式” 的:每个数据都会被分发(除非被缓存策略过滤),适合需要处理 “每一个事件” 的场景。),且溢出策略固定为 “挂起发送者”(确保状态更新不丢失)。
2025-11-16 20:46:53
975
原创 安卓端如何优雅的使用Retrofit配合协程示例代码
val code: Int, // 状态码val message: String, // 提示信息// 具体数据(泛型参数,类型灵活变化)data class WeatherData(val main: Main, // 温度等核心信息val weather: List<Weather>, // 天气描述// 温度等信息val temp: Double, // 温度。
2025-11-16 11:31:41
1086
1
原创 kotlin协程之什么是协程
编写异步操作,避免了传统回调(Callback)或 Future/Promise 模式带来的 “回调地狱” 问题。Kotlin 协程(Coroutines)是一种轻量级的线程管理机制,用于简化异步编程和并发任务处理。确保是在主线程,而且获得主线程handler,原来就是把代码块通过handler推进消息队列。继续跟踪MainDispatcherLoader.dispatcher。右键go to implementation。我们跟踪Dispatchers.Main。我们现在全局作用域中启动一个协程。
2025-11-15 10:08:14
638
原创 okhttp详解
OkHttp 是 Square 公司开发的一款高效、简洁的 HTTP 客户端库,广泛用于 Android 开发和 Java 后端,支持 HTTP/1.1、HTTP/2、WebSocket 等,以性能优异、易用性强著称。
2025-11-13 12:42:11
705
原创 android sharepreference 的替代品
在 Android 开发中,因简单易用被广泛用于轻量数据存储,但存在线程不安全、异步操作繁琐、不支持复杂数据结构等局限。
2025-11-12 19:28:38
359
原创 kotlin扩展函数是如何实现的
Kotlin 扩展函数的本质是 **“带接收者的静态方法”**,通过编译期的语法转换实现,不修改原有类的结构,也不支持动态多态。这种设计既保持了原有类的封装性,又能灵活地为现有类添加功能,是 Kotlin 提升代码可读性和开发效率的重要特性。
2025-11-11 21:09:47
441
原创 android 线程loop
线程绑定:一个 Looper 对应一个线程,通过存储,可通过获取当前线程的 Looper。消息驱动:线程的执行逻辑由消息队列中的消息驱动,避免了线程频繁创建销毁的开销。Handler 依赖Handler必须与 Looper 关联才能发送 / 处理消息(创建 Handler 时若不指定 Looper,默认使用当前线程的 Looper)。
2025-11-11 20:55:40
527
原创 android 内置apk的方法
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)# Module name should match apk name to be installedLOCAL_MODULE := GoogleZhuyinLOCAL_MODULE_TAGS := optionalLOCAL_SRC_FILES := $(LOCAL_MODULE...
2019-10-30 15:09:16
1489
原创 android 原生代码,长按power键反复执行弹出关机对话动画bug解决
diff --git a/alps/frameworks/base/services/core/java/com/android/server/policy/GlobalActions.java b/alps/frameworks/base/services/core/java/com/android/server/policy/GlobalActions.javaindex 342ec4b79...
2019-10-30 11:00:39
399
原创 安卓启动模式中容易忽略的要点
Activity跳转时携带页面參数的问题。由于当一个Activity设置了SingleTop或者SingleTask模式后,跳转此Activity出现复用原有Activity的情况时,此Activity的onCreate方法将不会再次运行。onCreate方法仅仅会在第一次创建Activity时被运行。而一般onCreate方法中会进行该页面的数据初始化、UI初始化,假设页面的展示数据无关...
2019-10-29 14:26:50
158
原创 android handler简单理解
1.handler的创建private Handler mHandler = new Handler(){ public void handleMessage(Message msg){ mTextView.setText(""+msg.arg1+"-"+msg.arg2); };}; 来看Handler的构造函数/** * Default cons...
2019-10-26 16:24:26
208
原创 android根据应用方向自动旋转的自定义view
import android.content.Context;import android.util.AttributeSet;import android.view.View;import android.view.ViewGroup;import com.android.camera.Log;// A RotateLayout is designed to...
2019-10-15 17:49:05
785
原创 android init.s分析
.section .text.start.section .text 前这段可以理解是代码段 .start是个什么鬼.equ MODE_USR ,0x10.equ MODE_FIQ ,0x11.equ MODE_IRQ ,0x12.equ MODE_SVC ,0x13.equ MODE_MON ,0x16.equ M...
2019-04-18 13:52:32
460
转载 开关机、重启时间优化
[DESCRIPTION]开关机、重启时间优化:开机性能优化:是用功能和其它因素多方面平衡的结果,片面追求单方面的性能没有太大意义;有些产品设计开机动画非常酷炫,动画图片过多、高帧率会影响开机速度,这时就需要看是开机速度优先还是体验优先;[SOLUTION]1.zygote,预加载class、resources;加载的多了,会影响开机时间;/sdcard/mt...
2019-04-12 21:07:52
729
原创 猪肉概念股上涨的思考
记得前年的时候.岳父大人说现在村里不给养散养的猪了.我就应该想到会带来一波猪肉价格的上涨.结果错过了这次行情.所以政策要仔细的进行分析其带来的后果,作为投资决策之一,还是经验不足啊...
2019-04-08 12:29:15
305
原创 CtsTelecomTestCases
今天遇到下面的错误 发现需要加入overlay的路径加入/vendor/partner_gms/apps/GoogleDialer/overlay/vendor/mediatek/proprietary/packages/services/Telecomm/res/values/config.xml具体可以看引用的文章-------------下面这个例子是在"vendor/goog...
2019-02-28 10:30:35
1093
原创 zip4j的正确使用方式
网上有方法去获取zip4j的进度 的方式有缺陷 ,如果是在后台线程解压, 会有解压到中间一直到不了100%问题, 查看代码.public void extractAll(final UnzipParameters unzipParameters, final String outPath, final ProgressMonitor progressMonitor, boolean runInTh...
2018-03-29 15:24:08
2921
1
原创 安卓电视虚拟鼠标
public class TcMouseManager implements TcMouseView.OnMouseListener{ public static final int KEYCODE_UP = KeyEvent.KEYCODE_DPAD_UP; public static final int KEYCODE_DOWN = KeyEvent.KEYCODE...
2018-03-27 14:41:14
8606
原创 安卓根据分包打包的方法
最近发现gradle里面需要有一个神奇的功能可以根据属性打包apk 先记下来公司 根据不同标签 给不同分辨率的产品打包 可以极大的缩小apk大小,具体后续在详细写是怎么做的productFlavors{ flavors_default{} default_720P{} ffalcon{} ffalcon_720P{} toshiba{} toshiba_...
2018-03-27 13:59:16
682
原创 电视端虚拟鼠标的设计
最近项目需要在电视端虚拟一个鼠标,所以利用jni来做一个。下面是虚拟鼠标控制的java代码SimMouse.java/** * native tool for browser */public class SimMouse { //private static final String LOGTAG = "BrowserUtil"; public static boolean mToo...
2018-03-24 11:51:49
3185
原创 如何去写一个输入法(1)
最近有幸做了一次输入法的开发,在此处共享一下,今天先写一部分输入法其实就是一个服务,基本上输入法都通过继承自谷歌提供InputMethodService类来实现输入法。然后要重写几个关键的回调函数就可以了。这几个函数包括:(1) onCreateInputView() 我们先来看看API说明:Create and return the viewhierarchy used
2016-02-05 09:30:10
1673
原创 android singleTask 加载模式的理解
简单的说 注明为singletask的activity 在它所属的任务栈中只有一个实例。当一个intent呼起它的时候。它所属的任务栈的栈顶必定是它。因为此时所有在它之上的activity都会被清除。很多人都说的冗长拖沓。其实就这么简单的理解就可以了。
2016-01-26 15:08:24
330
原创 虚拟机中ubuntu 内核更新后共享文件夹失效处理办法
与主机共享文件夹的命令sudo mount -t vboxsf ubuntushare /mnt/shared/ 虚拟机重新安装共享插件 解决更新内核后不能共享主机文件的问题cd /opt/VBoxGuestAdditions-*/init sudo ./vboxadd setup
2016-01-25 14:58:34
1532
原创 Webkit for android java层主要类库关系及浏览器实例讲解
Webkit forandroid的主要框架第一 安卓4.4 以前的框架
2014-07-16 20:09:45
1381
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅