2022年6月14日
摘要: @synchronized支持多线程递归调用,接下来我们来看一下@synchronized的底层实现。 一、@synchronized的源码入口 id _sync_obj = (id)obj1; objc_sync_enter(_sync_obj); struct _SYNC_EXIT { _SYN 阅读全文
posted @ 2022-06-14 21:58 suanningmeng98 阅读(550) 评论(0) 推荐(0) 编辑
  2022年6月8日
摘要: 一、什么是SharedPreferences SharedPreferences一个轻量级的存储类,特别适合用于保存软件配置参数。(是用xml文件存放数据,文件存放在/data/data/<package name>/shared_prefs目录下);经常用于保存用户数据。 二、如何使用 //1.使 阅读全文
posted @ 2022-06-08 19:26 suanningmeng98 阅读(39) 评论(0) 推荐(0) 编辑
摘要: 一、bug问题描述 界面上只有两个框,用户名和密码,用户名框输入之后可点击done按钮收回,密码框输入后点击done按钮无效 二、已有代码 在点击不同的editText时会切换焦点事件 重写了onFocusChange方法对editText事件做出setActivated处理 用户名的xml中设置了 阅读全文
posted @ 2022-06-08 16:42 suanningmeng98 阅读(32) 评论(0) 推荐(0) 编辑
  2022年6月4日
摘要: 一 、线程安全 1.1 什么是线程安全 线程操作共享数据的时候不会出现意想不到的结果就叫线程安全,否则,就是线程不安全 1.2 原子属性是一定是线程安全的? 原子属性只能保障 set 或者 get的读写安全,但我们在使用属性的时候,往往既有set又有get,所以说原子属性并不是线程安全的。 二、 i 阅读全文
posted @ 2022-06-04 11:21 suanningmeng98 阅读(220) 评论(0) 推荐(0) 编辑
  2022年6月3日
摘要: 一、单例 1.1 单例示例 static dispatch_once_t onceToken; dispatch_once(onceToken, ^{ <#code#> }); 1.2 如何使用 参考链接:https://juejin.cn/post/7103015785685057572#head 阅读全文
posted @ 2022-06-03 20:23 suanningmeng98 阅读(383) 评论(0) 推荐(0) 编辑
摘要: 一 死锁 1.1 死锁产生的原因 我们根据死锁的提示:__dispatch_wait_for_queue查找到GCD源码中死锁的源码: 我们查找其中关于_dq_state_drain_locked_by的函数调用: 由此,我们可以知道,当线程和队列相同时就会发生死锁。 1.2 死锁实例 //1 // 阅读全文
posted @ 2022-06-03 16:06 suanningmeng98 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 一、进程和线程 1.1 什么是进程和线程 进程是指在系统中正在运行的一个应用程序,每个进程之间是独立的,每个进程均运行在其专用的且受保护的内存空间内 线程是进程的基本执行单元,一个进程的所有任务都在线程中执行,进程要想执行任务,必须得有线程,进程至少要有一条线程。程序启动会默认开启一条线程,这条线程 阅读全文
posted @ 2022-06-03 10:57 suanningmeng98 阅读(238) 评论(0) 推荐(0) 编辑
  2022年5月26日
摘要: 一、常用语句 //打开或者创建数据库 openOrCreateDatabase(String path,SQLiteDatabase.CursorFactory factory) //插入一条数据 insert(String table,String nullColumnHack,ContentVa 阅读全文
posted @ 2022-05-26 19:44 suanningmeng98 阅读(18) 评论(0) 推荐(0) 编辑
摘要: 一、获取基本步骤 1.获取传感器服务 2.获取待监听的传感器 3.注册传感器的监听器 4.注销传感器的监听器 二、代码实现 1.获取传感器服务 SensorManage来管理安卓的传感器服务 SensorManager sensorManager = (SensorManager)getSystem 阅读全文
posted @ 2022-05-26 17:25 suanningmeng98 阅读(633) 评论(0) 推荐(0) 编辑
摘要: 一、加载不完全的代码原始代码 Glide.with(context).load(pic).into(holder.imageView); 二、添加占位符后 //添加占位符 RequestOptions requestOptions = new RequestOptions() .placeholde 阅读全文
posted @ 2022-05-26 16:28 suanningmeng98 阅读(1477) 评论(0) 推荐(0) 编辑