
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
LaunchedEffect 是中用于处理副作用的“瑞士军刀”。它通过与 Composable 的生命周期和 key 变化绑定,提供了一种声明式、安全且可控的方式来运行异步代码。当你需要根据组件的出现、销毁或状态变化来触发一个一次性或可重启的后台任务时,LaunchedEffect 就是你的首选工具。rememberCoroutineScope 是连接 Compose 事件回调 与 协程挂起函数

Android系统的蓝牙打开过程,涉及到APP应用层、framework框架层和Bluetooth协议栈层,总体的流程图可以参考如下:可以看到,开启的流程大致分为4个阶段:第一阶段: (对应图中绿色虚线流程)应用软件调用BluetoothAdapter的enable()方法,通过Binder远程调用到BluetoothManagerService里面对应的enable方法:@RequiresPer
StorageManager是Android SDK中管理存储设备的一个类。其中的存储设备分内部存储和外部存储,外部存储可以有SDCard、U盘等其他挂载的外设。StorageVolume代表的是一个设备信息的数据结构,里面包含了名称、路径、挂载状态等等信息。以前获取设备列表的方法大多是通过反射获getVolumeList()方法获取到StorageVolume[]数组,但是现在发现完全没有必..
一、概述Ubuntu是Linux系统,它是天生支持多用户操作的,用户空间是在根目录下的home/username里面。可以从Other Locations 进入,可以看到自己的电脑的几个磁盘分区:这个Computer的磁盘,就是系统盘,进入之后:可以看到很多系统文件,其中的home目录里面,就是我们用户账号的空间,这个空间只有当前自己用户或者root用户可以读写。其实桌面左边的一些文件夹,就是ho
LifeCycleOwner在LifeCycle的设计策略中扮演的是生命周期提供者的角色,一个UI组件想要接入到LifeCycle的一系列规则中,就需要实现LifeCycleOwner,比如我们熟知的ComponentActivity就是实现了LifecycleOwner,并且通过。这里就有一个问题,Activity是接入了LifeCycleOwner的,但是Window浮窗是没有接入的,而Liv

作为一个练手项目,基于IjkMediaPlayer的仿照腾讯视频风格的播放器,支持全屏缩放,对其中核心的代码做记录。播放器总体架构如图所示:player是继承frameLayout,自己内部拥有IjkMediaPlayer的实例,以及做渲染显示用的TextureView,同时player只有一个mContainer子控件,mContainer同样也是一个frameLayout容器,容纳Tex...







