- 博客(90)
- 资源 (10)
- 收藏
- 关注
原创 ./gradlew dependencies
查看android 依赖命令行./gradlew dependencies+--- androidx.legacy:legacy-support-v13:1.0.0| \--- androidx.legacy:legacy-support-v4:1.0.0| +--- androidx.core:core:1.0.0 -> 1.1.0 (*)| +--- androidx.media:media:1.0.0| | +---
2020-10-15 00:24:36
1586
原创 TextView 前者显示不完了则...
2个TextView 前者显示不完了则…,后者需要占有位置 小skillandroid:minWidth="30dp 关键代码 <TextView android:id="@+id/name" android:layout_width="0dp" android:la...
2020-03-28 22:31:34
327
原创 Leaking LiveData observers in Fragments
参考关于在Fragment中使用LiveData需要注意observe的生命周期:https://proandroiddev.com/5-common-mistakes-when-using-architecture-components-403e9899f4cb -> 1. Leaking LiveData observers in Fragments如果使用this,会导致obse...
2020-01-07 11:08:59
234
原创 开发快捷查看db
开发查看dbdebugImplementation ‘com.amitshekhar.android:debug-db:1.0.6’运行app后,查看logcat日志能看到类似如下信息:DebugDB: Open http://192.168.186.81:8080 in your browser查看安卓sqlite数据库工具:Android-Debug-Database查看sql可...
2019-11-08 02:04:35
181
原创 WebView预加载,解析网页
//url确保是以http开头 private void init(String link) { setWebViewClient(new WebViewClient() { @Override public void onPageStarted(WebView view, String url, Bitmap favicon) {...
2019-08-25 22:57:12
1420
原创 View不需要现在在屏幕上,到达截图效果
背景new一个有各种信息的View,不需要显示给用户,对这个View截图。上传分享等…参考代码实现ViewUtils.layoutView(view, 290, 210); 需要放在所有子view都bind完成后再调用,否则界面会乱掉public static void layoutView(View v, int width, int height) { // ...
2019-06-26 18:10:18
250
转载 windowSoftInputMode
监听软键盘高度变化涉及到两个较重要的知识点windowSoftInputModewindowSoftInputMode总共分两类:第一类以adjust开头,决定了键盘弹出之后以何种方式去挤压activity中的元素:adjustResize-挤压adjustPan-把整个Activity往上推adjustNothing-浮在Activity之上第二类以state开头,这个要关联两...
2019-06-11 10:34:56
446
原创 Android Map和Location开发
Android 系统Geocoder API能力getFromLocation(double latitude, double longitude, int maxResults) 可以指定语言(限原生系统)国内一般接的是高德和百度服务 不一定支持多语言。getFromLocationName(String locationName, int maxResults)getFromLocat...
2019-05-15 13:39:10
686
转载 MMKV——基于 mmap 的高性能通用 key-value 组件(存储)
githubMMKV——基于 mmap 的高性能通用 key-value 组件MMKV 是基于 mmap 内存映射的 key-value 组件,底层序列化/反序列化使用 protobuf 实现,性能高,稳定性强。从 2015 年中至今在微信上使用,其性能和稳定性经过了时间的验证。近期也已移植到 Android / macOS / Windows 平台,一并开源。MMKV 源起在微信客户端的...
2019-04-29 21:45:25
394
转载 通用的GridDividerItemDecoration
通用的GridDividerItemDecoration特点1.支持设置左右间距2.支持设置first item/last item ,top和bottom margin3.剩余空间每个item平均分配package com.starlight.mobile.android.smsone.common;import android.content.Context;import and...
2019-04-29 15:23:55
1923
原创 ConstraintLayout
这2组constraint属性最好成对出现,不要app:layout_constraintLeft_toRightOf app:layout_constraintEnd_toEndOf=“parent” 这样搭配使用将得不到你所期望的效果 app:layout_constraintLeft_toRightOf="@+id/iv_test2" app:layout_c...
2019-04-26 17:04:37
188
原创 Android中Window
Window的属性Window的属性,常用的选项:FLAG_NOT_FOCUSABLEWindow不需要获取焦点,也不需要接收各种输入事件(收不到Back键的事件),此标记会同时启用FLAG_NOT_TOUCH_MODEAL,最终事件会直接传递给下层的具有焦点的Window。FLAG_NOT_TOUCH_MODEAL收不到触屏事件,不会拦截其他Window的单击事件,一般情况下都...
2019-04-25 12:25:31
364
原创 LiveData
LiveData加粗样式abstract LifecycleLifecycleOwnerliveData内部在invoke@MainThread public void observe(@NonNull LifecycleOwner owner, @NonNull Observer<T> observer) { if (owner.getLifec...
2019-04-23 21:24:33
194
原创 ObjectAnimator基本用法
//参数一:要操纵的view;//参数二:要操纵的属性(translationX、translationY、rotationX、rotationY、rotation、scaleX、scaleY, alpha)//参数三:可变数组参数,代表属性变化的一个取值过程。ObjectAnimator translationX = ObjectAnimator.ofFloat(mTestView, “...
2019-04-22 14:19:16
1425
原创 ProgressBar自定义旋转Drawable and shape相关属性
自定义rotateandroid:toDegrees值可以改变旋转的速度<?xml version="1.0" encoding="utf-8"?><rotate xmlns:android="http://schemas.android.com/apk/res/android" android:fromDegrees="0" android:pivotX=...
2019-03-26 20:46:18
352
原创 shell脚本
set命令set -x与set +x指令用于脚本调试set是把它下面的命令打印到屏幕set -x 开启 set +x关闭 set -o 查看set -e 与+e在"set -e"之后出现的代码,一旦出现了返回值非零,整个脚本就会立即退出cut命令cut命令可以从一个文本文件或者文本流中提取文本列。[使用说明cut 命令从文件的每一行剪切字节、字符和字段并将这...
2019-03-17 01:38:39
133
原创 网络优化
网络优化主要从三个方面进行优化首先要弄清楚现状,需要服务端和客户端协同排查和打点统计。主要从速度、成功率、流量三方面来做优化。Gzip压缩HTTP协议上的Gzip编码是一种用来改进WEB应用程序性能的技术,用来减少传输数据量大小,减少传输数据量大小有两个明显的好处:以减少流量消耗可以减少传输的时间IP直连与HttpDnsDNS解析的失败率占联网失败中很大一种,而且首次...
2019-03-01 15:00:19
276
原创 Android新特性——App Bundles
我们是否可以直接利用Google为我们提供好的构建机制,模仿Play商店构造一个SDK对App自身进行更新呢?通过技术分析,我们有两种方案可以实现自行更新:1.直接利用PackageInstaller进行安装,这种方式最接近App Bundles的在Google Play中的实际作用效果,但是,最大问题就是会对用户造成极大的干扰,首先,很多用户出于安全考虑,是不会轻易允许未知安装来源的...
2019-02-27 19:37:13
153
原创 ANR分析
ANR类型ANR一般有三种类型:KeyDispatchTimeout(5 seconds) --主要类型按键或触摸事件在特定时间内无响应BroadcastTimeout(10 seconds) --BroadcastReceiver在特定时间内无法处理完成ServiceTimeout(20 seconds) --小概率类型 Service在特定的时间内无法处理完成获取tr...
2019-02-26 17:30:12
437
原创 帧率
通过标准:fps&gt;50,大于16ms的帧占比&lt;8%,即为通过。下面是一些人体对不同帧率的感知程度:人眼与大脑之间的协作无法感知超过60fps的画面更新。12fps:手动快速翻动书籍的帧率;24fps:人眼感知的是连续线性的运动;低于30fps是无法顺畅表现绚丽的画面内容的蓝:更新Display List时间(OnDraw()方法占用时间)红:执行...
2019-02-24 11:41:22
540
原创 android动画学习摘要
android之animator 和animation 的区别Animation框架定义了透明度,旋转,缩放和位移几种常见的动画,而且控制的是一个整个View动画,实现原理是每次绘制视图时View所在的ViewGroup中的drawChild函数获取该View的Animation的Transformation值,然后调用canvas.concat(transformToApply.getMat...
2019-02-23 10:45:10
185
原创 Aop思想学习摘要
aop就是用来封装与业务逻辑无关的代码隐式调用,从而使得业务逻辑能重用,至于重用某一块业务代码,还是要用封装来保持业务逻辑完整性Android上的应用AOP技术常用在以下方面:1、日志记录:业务埋点2、持久化3、性能监控:性能日志4、数据校验:方法的参数校验5、缓存:内存缓存和持久缓存6、权限检查:业务权限(如登陆,或用户等级)、系统权限(如拍照定位)7、异常处理...
2019-02-22 14:20:13
113
原创 DiskLruCache学习摘要
DiskLruCache构造函数valueCount:valueCount the number of values per cache entry. Must be positive.比如okhttp中的缓存每一个url请求cache有四个文件,两个状态(DIRY,CLEAN),每个状态对应两个文件:一个0文件对应存储meta数据,一个文件存储body数据 /** * Crea...
2019-02-22 10:50:18
167
原创 Http/2,okhttp等摘要
多路复用多路复用,代替原来的序列和阻塞机制。所有就是请求的都是通过一个 TCP连接并发完成。 HTTP 1.x 中,如果想并发多个请求,必须使用多个 TCP 链接,且浏览器为了控制资源,还会对单个域名有 6-8个的TCP链接请求限制,如下图,红色圈出来的请求就因域名链接数已超过限制,而被挂起等待了一段时间:HTTP/2 中,同域名下所有通信都在单个连接上完成,该连接可以承载任意数量的双向...
2019-02-20 11:40:36
352
原创 HashMap等数据结构简析
ArrayList数组的实现,连续的存储空间,随机读取快,增删性能差,每次扩容都比较耗性能LinkedList双向链表实现,随机读取性能不如ArrayList,增删性能好。forEach 读取性能远好for循环,get(index)有个查找过程:/** * Returns the (non-null) Node at the specified element index...
2019-02-16 17:36:34
174
原创 Padding margin小点
GroupView等子中padding设置后是会算在相对应View的width中的而margin是不会的2.margin设置后其LayoutParams类型是其父空件相对应的类型。
2019-01-30 16:45:13
134
原创 adb 常用命令
获取机器MAC地址:adb shell cat /sys/class/net/wlan0/address查询各进程内存使用情况:adb shell procrank查看IO内存分区:adb shell cat /proc/iomem查看wifi密码:adb shell cat /data/misc/wifi/*.conf获取设备名称:adb shell ca...
2019-01-15 15:38:47
197
原创 文件IO如何设置Buffer
操作系统的文件操作是以Block为单位,而不是byte为单位。因此可以想到,如果我们的Buffer不是Block Size的整数倍,将存在浪费。例如我们的Buffer Size是1.1个Block,操作系统依然会操作2个Block。我们实验验证一下。通过StatFs.getBlockSize()得到小米3的Block Size是4096 byte。好像Buffer设置越大,系统调用越少,...
2019-01-04 18:56:54
867
原创 ART虚拟机oat文件
5.0以上android强制用art虚拟机oat文件在安装过程中dex2oat系统工具将apk所有dex文件转成oat文件放在/data/dalvik-cache/arm目录下后缀还是以dex/odex结尾
2018-12-07 19:03:09
574
转载 HTTPS协议、TLS协议、证书认证过程解析
非对称加解密非对称加密包含一个密钥对:公钥和私钥。公钥可以公开,私钥必须安全保存。如上图所示,数据可以被公钥加密,加密后的数据只有持有私钥才能进行解密。同理私钥加密的数据,也只有对应的公钥才能解密。建立HTTPS连接以后,client(浏览器)已经获得server段的公钥,并且经过TLS协议在握手过程中协商出一个只有双方知道的对称密钥,在后续的数据传输过程中都将使用该密钥进行数据加密传输...
2018-12-07 11:26:25
248
原创 ImageView所设置Id相同的坑
最近一直在查一个问题,ImageView通过Glide设置了图片之后,切换业务之后,或者恢复页面时,总是被置空。RecycleView+ViewPager+Glide的配置,一直在怀疑Glide哪里设置出了问题,就是没有找到原因。终于所有办法都用过之后,突然想起现在是一个Activity中加载了多个Fragment,那么会不会是id重复被其他界面替换了,依着这个思路,果然换了个独一的id问题就解...
2018-11-27 16:15:02
456
android usb转串口数据通信示例
2019-06-25
AES_experiment_01_C++
2017-03-09
Android自动清理无用资源
2015-07-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人