- 博客(67)
- 资源 (6)
- 收藏
- 关注
原创 git stash 小记
Stash创建git stash : msg内容为 上传commitid+commit信息git stashsave “msg” : 执行存储时,添加备注 msg为备注查看git stash list :本地所有stash列表 栈模式git stash show :显示做了哪些改动,默认show第一个存储 git stash show stash@{$num} : git stash show stash@{0}. 显示指...
2021-12-15 09:08:38 1744
原创 关于OkHttp代码设置证书的记录
public void initSslContext(InputStream... certificates) { try { //certificates-证书输入流 //服务端配置的信任证书 //0-用CertificateFactory将流得到Certificate //1-将certificates 放入serviceKeyStore内(hashTable方式存放) .
2021-01-06 14:54:18 398
原创 借助ContentProvider自动初始化
很多第三方框架或SDK都会有个初始化操作,比如在Application的onCreate中调用XXX.init(),最近学习了LeakCanary的做法,就不再需要手动初始化了,那么自动初始化该怎么做呢?首先定义一个InitProvider,它是继承于ContentProvider的一个子类。然后在AndroidManifest.xml中注册这个ContentProvider。public class InitProvider extends ContentProvider { @Ove
2021-01-05 14:37:12 603
原创 参数限制实现方式
public static void test(){ Bean bean = new Bean(); bean.setTypeI(value1); bean.setTypeE(ModeEnum.value1);}//valuepublic static final int value1 = 1;public static final int value2 = 2;public static final int value3 = 3;//注解方式@IntDef(f.
2020-09-25 10:09:07 180
原创 APT的流程记录
APT:Annotation Processing Tool,即注解处理器1.apt-annotation:定义注解2.apt-processor:处理注解,生成代码(AbstractProcessor-javapoet):apply13.apt-util:调用processor生成的代码(反射调用):apply14.app:主项目:apply123...
2020-08-16 15:28:29 211
原创 记录一次完整的消息流程
1)Looper.prepare(); 1. new Looper() : Looper生成MessageQueue,指定Thread 2.ThreadLocal.set(Looper)2)new Handler() 1.Handler中指定Looper,MessageQueue(Looper是指定线程对应的,MessageQueue是得到Looper中的)3)发送message 流程 Handler.enqueueMessage-> MessageQueu...
2020-08-13 11:33:38 125
原创 记录getPackageInfo的流程探索
起源PackageInfo packageInfo = getPackageManager().getPackageInfo();getPackageManager: ContextWrapper:mBase->Context->ActivityPackageManager->ApplicationPackageManager:getPackageInfo-getPackageInfoAsUser->mPM(IPackageManager:aidl实现)IPackag
2020-08-11 11:38:38 1112
原创 View.onTouchEvent
public boolean onTouchEvent(MotionEvent event) { //获取基本信息(没考虑多点,仅考虑单点) 坐标&action final float x = event.getX(); final float y = event.getY(); final int viewFlags = mViewFlags; final int action = event.getAction(); //判断是否可点击,长.
2020-07-08 18:35:50 247
原创 关于Uri.fromFile(File)的思考
看到太多网上对7.0兼容,对于文件共享的限制。Uri.fromFile(file) : file:///storage/emulated/0/DCIM/download/aaa.jpgFileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID + ".fileProvider", file):content://com.taikang.simtest.fileProvider/camera_photos/DCIM/download
2020-05-11 17:46:19 2965
原创 原码反码补码
1.正数的原码反码补码相同,是将数字转换为二进制形式,然后将最高位补0。:10所对应的原码反码补码都是 0000 10102.而对于负数,负数的原码是它的绝对值对应的二进制,而最高位是1。所以:10所对应的原码是 1000 10103.负数的反码是它原码最高位除外的其余所有位取反,所以:10所对应的反码是 1111 01014.而负数的补码是将其反码的数值+1,所以:10所对应的补码是 1111 0110...
2020-05-09 10:17:04 430
原创 3次握手,4次挥手
上图包括三个部分:建立连接,数据传输,断开连接第一次握手:客户端发送syn包(seq = x)到服务器,并进入SYN_SENT状态,等待服务器确认;第二次握手:服务器收到syn包,必须确认客户的SYN(ack = x+1),同时自己也发送一个SYN包(seq = y),即SYN+ACK包,此时服务器进入SYN_RECV状态;第三次握手:客户端收到服务器的SYN+ACK包,向服务器确认包AC...
2020-05-08 09:40:25 209
原创 ConstraintLayout
ConstraintLayout1.Relative positioninglayout_constraintLeft_toLeftOf 我的左侧与你的左侧对齐layout_constraintLeft_toRightOf 我的左侧与你的右侧对齐layout_constraintRight_toLeftOf 我的右侧与你的左侧对齐layout_constraintR...
2020-04-22 13:34:13 178
原创 shouldShowRequestPermissionRationale
shouldShowRequestPermissionRationale,回到最初的解释“应不应该解释下请求这个权限的目的”。1.都没有请求过这个权限,用户不一定会拒绝你,所以你不用解释,故返回false;2.请求了但是被拒绝了,此时返回true,意思是你该向用户好好解释下了;3.请求权限被禁止了,也不给你弹窗提醒了,所以你也不用解释了,故返回fasle;4.请求被允许了,都给你权...
2020-04-02 15:29:40 1536
原创 版本适配记录
1.4.1 Apache HTTP 客户端弃用影响采用非标准 ClassLoader 的应用其实,自 Android 6 发布,就移除了对 Apache HTTP 客户端的支持,而推荐改用 HttpURLConnection 类,因为它可以通过透明压缩和响应缓存减少网络使用,并可最大限度降低耗电量, 从此我们变习惯这样使用 Apache HTTP API,即在 build.geadle 添加:...
2019-07-20 16:40:09 128
原创 git 小记
1.设置上传的请求缓存区,【需要上传的项目根目录下,执行】(150g) git config --global http.postBuffer 1572864002.已经提交到本地的版本回滚 git reset HEAD~n...
2018-05-18 15:31:26 223
原创 Android 透明度换算小计
AARRGGBB其中,ARGB 依次代表透明度(alpha)、红色(red)、绿色(green)、蓝色(blue)。以颜色值 #FF99CC00 为例,其中,FF 是透明度,99 是红色值, CC 是绿色值, 00 是蓝色值透明度1.透明度分为256阶(0-255),计算机上用16进制表示为(00-ff)。透明就是0阶,不透明就是255阶,如果50%透明就是127阶(256的一半当然是128,但因...
2018-04-10 09:31:08 212
原创 浅谈图片压缩
1 Bitmap.compress():质量压缩:它是在保持像素的前提下改变图片的位深及透明度等,来达到压缩图片的目的,不会减少图片的像素。进过它压缩的图片文件大小会变小,但是解码成bitmap后占得内存是不变的。2 BitmapFactory.Options.inSampleSize:内存压缩:解码图片时,设置BitmapFactory.Options类的inJustDecodeBounds属性...
2018-03-23 10:11:26 214
原创 RxPermisson2 用法 翻译
To use this library your minSdkVersion must be >= 11. (最低版本>=11)dependencies { compile 'com.tbruyelle.rxpermissions2:rxpermissions:0.9.5@aar'}UsageCreate a RxPermissions instance : (创建一个PxP...
2018-03-21 11:03:52 481
原创 Glide 4.0 Https 兼容
兼容Glide4.0 以上版本 加载https 图片问题@GlideModulepublic class OkHttpAppGlideModule extends AppGlideModule { @Override public void registerComponents(Context context, Glide glide, Registry registry) {...
2018-03-21 09:34:17 1232
原创 Retrofit Https 兼容
import java.security.cert.CertificateException;import java.security.cert.X509Certificate;import java.util.concurrent.TimeUnit;import javax.inject.Singleton;import javax.net.ssl.SSLSocketFactory;...
2018-03-21 09:30:26 387
原创 Rxjava 2 线程调度记录
subscribeOn() 指的是发射事件的线程,observerOn 指的是订阅者接收事件的线程多次指定发射事件的线程只有第一次指定的有效,也就是说多次调用 subscribeOn() 只有第一次的有效,其余的会被忽略。但多次指定订阅者接收线程是可以的,也就是说每调用一次 observerOn(),下游的线程就会切换一次。发射事件的线程必须在订阅之前指定或者切换若不改变上游与下游线程,此时上游与
2018-01-19 13:33:49 220
原创 角度 弧度的转换
由数学关系已知 360度 = 2π弧度 => 180度 = π* 弧度 可证得 一: 1度 = (π * 弧度)/180 = 弧度/60 => 度= 弧度*(π/180) 即 60度 = 弧度*(60*π/180) 可证得二:1弧度= 180/π = 60度 => 弧度= 度*(180/π) 即 60弧度 = 度*(180/π)例 1 : cos(3
2017-05-10 16:12:58 879
原创 ScaleGestureDetector_OnScaleGestureListener,SimpleOnScaleGestureListener
android ScaleGestureDetector
2016-06-22 15:14:49 2072
原创 GestureDetector_SimpleOnGestureListener
android 手势SimpleOnGestureListener
2016-06-22 15:07:05 553
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人