- 博客(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];}其中通过&...
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关注的人