读写锁简介在并发场景中用于解决线程安全的问题,我们几乎会高频率的使用到独占式锁,通常使用java提供的关键字 synchronized或者concurrents包中实现了Lock接口的ReentrantLock。它们都是独占式获取锁,也就是在同一时刻只有一个线程能够获取锁。而在一些业务场景中,大部分只是读数据,写数据很少,如果仅仅是读数据的话并不会影响数据正确性(出现脏读),而如果在这种业务场景下
转载
2023-07-05 17:47:13
117阅读
距离上一篇文章竟然已经隔了13天了,近期刚开始做了一小段时间的html5前端网页编辑,这就当是为后面做一个公众号做一个小的热身吧, 后来公司有一个app开发的小项目,后来发现公司竟然只有我自己做,多么孤独,闲话少叙直奔主题, 主要是完成现场写SIM卡,毕竟我们公司是。。。,主要内容是从Excel中读出数据,用数据,然后改写原Excel中的内容,之前没有接触过excel,查了一些资料,Andro
转载
2023-09-07 23:29:39
32阅读
Android 6.0(不含)以下在6.0之前的版本,申请sd卡读写权限不是一件难事,只需要在AndroidManifest.xml中加入下列代码,权限会在app安装时申请,READ可以不添加。因为在8.0以前,申请WRITE会自动获取 一组 相关的权限,其中就包括READ权限<uses-permission android:name="android.permission.WRITE_EX
首先读取外置TF卡,需要获取到外置TF卡的权限,因为Android 在4.4版本之后 引入了外部存储访问的框架(SAF)。SAF其中的部分功能就是通过其获取对外置TF卡的读写权限,从而操作外置TF卡。目录1、TF卡读写操作1.1获取TF卡权限1.2、DoucumentFile简介1.2.1创建文件1.2.2编辑文件1.2.3查找文件1.2.4删除文件1.2.5获得文件名1.2.6获得文件Uri1.
转载
2023-08-29 10:17:09
669阅读
ISO7816是一种接触式的读卡协议,PSAM、SAM、手机的SIM卡都是按照这个协议定制的。协议分为2个部分,复位和数据的传输。本文档主要介绍自己的理解和在调试的过程,具体协议部分的内容需要翻看ISO7816的协议文档。本文重点是带着数据对协议进行分析。适合刚接触ISO7816的人。加深对协议的理解。一、复位 &n
转载
2023-11-29 06:01:55
79阅读
数据的存储有多种方式,比如数据库存储、SharedPreferences存储、文件存储等; 这里我们将要介绍最简单的文件存储方式; 文件存储简单的来说就是一般的JAVASE中的IO流,只是把他应用于Android手机中而已; 一、文件存储核心代码
文件存储 (1)FileOutputStream out = context.openFileOutput(String filename,i
转载
2023-12-19 09:32:13
67阅读
文章目录前言一、ReadWriteLock二、ReentrantReadWriteLock1.特性2.使用样例结尾 前言在前面的文章中我们介绍过两种锁:内置锁(synchronized)和显式锁(ReentrantLock)。这两种锁都是独占锁,也就是说获取到这个锁之后其它线程再想获取这个锁必须等当前线程释放这个锁。有些时候线程多数情况下都是读取数据的值,而不是修改这个数据,但是读取数据的线程之
转载
2023-07-05 17:47:02
124阅读
//按照垂直顺序排列
android:orientation="vertical"
android:id —— 为控件指定相应的ID
android:text ——指定控件当中显示的文字,需要注意的是,这里尽量使用strings.xml文件当中的字符串
android:grivity —— 指定控件里面的内容的基本位置,比如说居中,居右等位置
android:textSize —— 指定控件当
转载
2023-09-14 15:48:45
76阅读
前言相信磁盘缓存在绝大部分的app上都有应用,相对于数据库缓存来说,可以不要注重于缓存的管理,比较开放和随意。 再加上jakewharton早年间发布的disklrucache框架,让我们使用磁盘缓存更加简单,效率上和数据库缓存也拉进了一步,以后有时间我在加上disklrucache的缓存解读。但是在多线程的环境下,对同一份数据进行读写,会涉及到线程安全的问题。比如在一个线程读取数据的时候,另外一
转载
2024-06-15 11:23:53
32阅读
背景由于app可能有多个进程,因此在某些场景下,就要进程间相互同步状态,避免多个进程各做各的,但数据不同步,导致产生异常。方案目前认为 Android 平台目前有这样几个方案:使用微信MMKV,微信开源的MMKV是支持多进程同步的,开发app的话推荐使用,不过对于开发SDK避免使用第三方代码的原则,不推荐用。使用ContentProvider 包裹 Sp ,其他进程使用的时候,通过ContentP
转载
2023-07-03 17:54:13
125阅读
读-写锁 ReadWriteLock:①ReadWriteLock 维护了一对相关的锁,一个用于只读操作, 另一个用于写入操作。 只要没有 writer,读取锁可以由 多个 reader 线程同时保持。写入锁是独占的。。②ReadWriteLock 读取操作通常不会改变共享资源,但执行 写入操作时,必须独占方式来获取锁。 对于读取操作占多数的数据结
转载
2023-07-07 15:32:21
145阅读
应用私有存储文件的写入与读取 - openFileInput 和 openFileOutput
应用私有存储文件:
/data/data/<package name>/files/目录下
转载
2023-08-07 06:54:45
210阅读
09-12 15:24:33.903: W/System.err(19499): java.lang.NullPointerException: Attempt to invoke virtual method 'android.database.Cursor android.database.sqlite.SQLiteDatabase.rawQuery(java.lang.String, jav
转载
2024-08-28 19:50:47
57阅读
在Android开发中,需要添加附带的db数据库,用于实现某些需求。例如,选择城市的功能,需要添加city.db。使用SQLite Database Browser,这款可视化工具来操作db文件。SQLite DataBase Browser打开city.db,如下图所示:本篇介绍查找城市1. 添加city.db文件:通过是将db文件放置到raw文件夹下,因此,在/res/raw文件夹下放置cit
转载
2023-09-03 21:54:20
185阅读
这里主要讲讲新的Android 基础的UI控件,此外还拓展下新的控件。所有的控件都是View的子类。常见的UI控件主要有:TextView,Button,EditText,ImageView,ImageButton,ProgressBar,AlertDialog,ProgressDialog,RadioGroup,RadioButton,Spinner,Switch,RatingBar.1.Tex
转载
2023-08-02 20:08:27
131阅读
目录1.TimerPicker的使用方法2.DatePicker的使用方法 3.AnalogClock(模拟时钟)的使用方法1.TimerPicker的使用方法在布局文件使用<TimePicker/>控件在MainActivity获取代表TimePicker、Button和TextView控件的对象为TimePicker和Button绑定监听器编号方法类型描述1public
转载
2023-08-04 22:52:12
138阅读
学习自定义View,遂动手写了一个时钟控件首先,按需求分析思路:绘制步骤绘制大圆圈、刻度、绘制数字绘制指针其他操作自动开启计时适配wrap_content和固定width、height值;自定义属性:时钟颜色、各个刻度颜色、三种指针颜色等接下来按步骤绘制:我们先看onDraw方法中我们的操作,这里对应我们上面说的步骤:@Override
protected void onDraw(Canv
转载
2023-09-13 16:45:19
0阅读
控件属性:第一类:属性值为true或falseandroid:layout_centerHrizontal 水平居中android:layout_centerVertical 垂直居中android:layout_centerInparent 相对于父元素完全居中android:layout_alignParentBottom
转载
2023-11-03 08:31:57
40阅读
1.TextViewtextview是我们常见的界面布局了,每次new一个新的project都会有他,让我们来认识认识他 这里要注意的是,有些朋友觉得android:ellipsize="end"失效,没效果就是需要设置最大行数,让末尾显示不出的内容变为省略号。其他基本的属性都比较常用,大家一定都有所了解。2.EditTexthint是在用户未输入密码时,显示在输入框的内容。textCo
转载
2023-07-05 22:48:57
140阅读
今天我重新看了一遍那些基础的控件,打算仔细地研究一下自己之前学习的时候有没有漏了一下什么细节,那么我这一段就从最简单的开始吧 Button:按钮,基础的交互控件之一 样式: xml简单的按钮代码: <Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout
转载
2023-07-06 12:06:48
85阅读