自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

原创 Okhttp3版本升级后出现的未response.close()的问题

错误:java.lang.IllegalStateException: cannot make a new request because the previous response is still open: please call response.close()解决:在自己自定义的拦截器中添加response.close()即可感谢:https://blog.csdn.net/ysy950803/article/details/101058070的分享...

2021-06-18 11:16:39 3426

原创 android studio 调用方法的时候 补全出来的方法少右边括号的解决方法

android studio 调用方法的时候 补全出来的方法少右边括号打开Android Studio的PreferencesEditor下的General,然后点击Smart Keys勾选Insert paired brackets就可以解决了

2021-06-01 10:48:41 703 1

原创 插件化-占位式插件化

插件化-占位式插件化Android中的插件化,即将业务解耦封装为一个单独的插件,根据不同的业务需求,进行不同的组合,动态进行替换,并可对插件进行管理、更新,后期对插件也可进行版本管理等操作。插件化主要概念宿主:即需要提供运行环境的apk,也就是我们安装在手机上的应用程序。插件:即独立的功能封装成的小apk,无法直接运行,需要依赖于宿主环境,否则无法运行。用于动态更新内容。标准:提供给插件使用的我们定义的标准库,用于宿主和插件之间的环境交互。宿主宿主中应提供ProxyActivity类,为帮

2021-04-19 17:33:17 119

原创 ARouter路由–组件间跳转

ARouter路由–组件间跳转ARouter使用的是APT(Annotation Processing Tool)注解处理器,通过给对应的类添加注解,在编译器动态生成对应的路由表文件。基本结构arouter-annotation 注解类所在库,包括Route(作用于类之上,具体支持的类型在RouteType的enum中)、Autowired(作用于属性之上,用于跳转间的传值注解)、Interceptor(作用于类之上,拦截器注解)。arouter-compiler 注解处理库,处理arouter-

2021-04-10 11:24:44 558 2

原创 使用ARouter的拦截时出现的坑

使用ARouter的拦截时出现的坑问题描述原因分析解决方案问题描述在使用ARouter的拦截器时,@Override public void process(Postcard postcard, InterceptorCallback callback) { Log.e("process", "first start process"); callback.onInterrupt(new RuntimeException()); Log.e("p

2020-11-04 19:05:23 957

原创 Rxjava配合Retrofit

Rxjava配合RetrofitdoOnNext()可以在不订阅的情况下更新UI。实例一步实现注册 – 更新UI – 登录RetrofitClient.createRetrofit().create(ApiService::class.java) .register("6784321dfwed","1234567","1234567") //上游子线程执行下...

2020-03-21 13:23:38 718

原创 RxJava基本使用--背压模式

RxJava基本使用–背压模式上游一直发送事件,下游接收不过来了。则会造成内存泄漏,背压模式(Flowable)由来。背压模式-上游不使用Observable,而使用Flowable。对应下游Subscriber什么时候用Observable,什么时候用Flowable?发射的大量事件的时候,并且考虑到下游处理不过来了,就要使用Flowable背压模式。背压模式参数Backpress...

2020-03-21 13:23:00 372

原创 RxJava基本使用--线程切换

RxJava基本使用–线程切换Observable.create(object : ObservableOnSubscribe<String>{ override fun subscribe(emitter: ObservableEmitter<String>) { Log.e("RxJavaActivity","上...

2020-03-21 13:19:38 474

原创 RxJava基本使用--合并型操作符

RxJava基本使用–合并型操作符startWith,concatWith先创建被观察者,然后再组合其他的被观察者,然后再订阅。startWith先执行startWith中的被观察者发送的数据,再执行另一个被观察者。Observable.create(object : ObservableOnSubscribe<String>{ override fu...

2020-03-20 09:50:07 178

原创 Rxjava基本使用--条件型操作符

Rxjava基本使用–条件型操作符all()只要有一个符合条件,就为false;否则为true//示例:只要有一个为"cc"的,就是false var a = "1" var b = "2" var c = "3" var d = "cc" if (a == "cc" || b == "cc" || c == "...

2020-03-20 09:48:14 141

原创 Rxjava基本使用--过滤型操作符

Rxjava基本使用–过滤型操作符filtertrue为全部都发射给下游 false为全部不发射给下游Observable.just("三鹿","合生元","哈哈") .filter(object : Predicate<String>{ override fun test(t: String): Boole...

2020-03-20 09:47:37 116

原创 RxJava基本使用--变换型操作符

RxJava基本使用–常用的变换型操作符map()把上层发送的数据进行转换然后在到观察者//上游 发送1 2 3 Observable.just("1", "2", "3") //变换操作map 可以有多个map转换 return 返回null则下游不接收 .map(object : Function<...

2020-03-20 09:46:44 96

原创 RxJava基本使用--常用的创建型操作符

RxJava基本使用–常用的创建型操作符创建Observable被观察者对象。create()使用者自己发射事件接收事件。//上游Observable.create(ObservableOnSubscribe<Int> { emitter -> emitter.onNext(1) }) .subscribe( ...

2020-03-20 09:46:00 133

原创 RxJava基本使用--上游与下游

RxJava基本使用–上游与下游var disposable : Disposable? = null private fun rxTest1() { //起点 被观察者 Observable.create(ObservableOnSubscribe<Int> { emitter -> r...

2020-03-20 09:45:06 431

原创 OkHttp源码解析

这里写自定义目录标题OkHttp源码解析基本使用Call对象的获取call.enqueue方法DispatcherExecutorService线程池executorService().execute(call)方法getResponseWithInterceptorChain()OkHttp源码解析基本使用val okhttp = OkHttpClient.Builder() ...

2020-03-17 17:13:54 91

原创 Handler源码分析

Handler源码分析Activity启动时的Looper当程序运行时,会先执行ActivityThread的main方法。会执行Looper.prepareMainLooper()方法和Looper.loop()方法。Looper.prepareMainLooper()public static void prepareMainLooper() { prepare(fal...

2019-12-19 17:49:19 88

原创 WebView中遇到的部分问题

WebView中遇到的部分问题WebView中遇到的部分问题是否支持javascript及和h5的交互设置webSettings.setJavaScriptEnabled(true)通过webViewFind.addJavascriptInterface(this, "GoHomeWebViewJavascriptBridge");其中GoHomeWebViewJavascriptBri...

2019-12-17 17:07:16 306

原创 Android.mk格式

基本格式定义模块当前路径(必须定义在文件开头,只需要定义一次)LOCAL_PATH := $(call my-dir)清空当前环境变量(LOCAL_PATH除外)include $(CLEAR_VARS)当前模块名(这里会生成libhello-jni.so)LOCAL_MODULE := hello-jni当前模块包含的源代码文件LOCAL_SRC_FILES := hello-...

2019-11-13 10:18:47 163

原创 gcc编译时出错总结

gcc编译时出错总结编译流程分4步进行预处理 将.cpp文件编译为.igcc -E main.cpp -o main.i编译 将.cpp文件编译为.sgcc -S main.cpp -o main.s汇编 将.s文件编译为.ogcc -c main.s -o main.o链接 将.o文件编译为可执行文件gcc main.o -o maingcc main.o -lstdc+...

2019-11-11 19:37:08 752

原创 C++基础

C++基础指针数组和数组指针我们所看到的正常数组类型为:int arr[] = {100,200,300};指针数组而在C++中,我们会有指针数组int* pall[3];,其中存放的就是我们arr数组中的各个值的位置,指向其地址,然后拿到值。for (int i = 0;i < 3;i++) { pall[i] = &arr[i];}其中通过&amp...

2019-11-11 18:49:46 89

原创 Choreographer

ChoreographerChoreographer(编舞者)用来控制同步处理输入(Input)、动画(Animation)、绘制(Draw)三个UI操作。初始化Choreographer在View的绘制流程的WindowManagerGlobal.java类中,addView()方法的root = new ViewRootImpl(view.getContext(), display)进行...

2019-10-21 14:55:59 440

原创 事件分发机制

事件分发机制事件类型MotionEvent.ACTION_DOWN 手指刚接触屏幕MotionEvent.ACTION_MOVE 手指在屏幕上滑动MotionEvent.ACTION_UP 手指从屏幕上松开MotionEvent.ACTION_CANCEL 非人为因素取消当一次手指触摸屏幕的行为会发出一系列点击事件:1、点击屏幕后立即松开,事件序列为DOWN->UP;2、...

2019-10-14 17:16:30 231

原创 Canvas详解

Canvas详解绘制几何图形,文本,位图等在指定坐标绘制位图public void drawBitmap(@NonNull Bitmap bitmap, float left, float top, @Nullable Paint paint) { super.drawBitmap(bitmap, left, top, paint);}根据给定的起始点和结束点绘制连线...

2019-10-09 11:06:57 180

原创 UI绘制流程及原理

UI绘制流程及原理setContentView解析installDecor()方法View的绘制流程绘制方法步骤详细绘制performMeasureMeasureSpec测量performLayoutperformDrawsetContentView解析首先,我们的setContentView是在我们的Activity.java类中发现为getWindow().setContentView(l...

2019-09-30 17:43:41 187

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除