![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
android
JokAr-
这个作者很懒,什么都没留下…
展开
-
Okhttp3 链接池复用机制源码探索
前文对于http请求我们都知道开始于TCP链接的三次握手然后传输数据然后释放,如下图而当我们开启连接复用keep-alive后就是指在上一次链接不立马断开链接在超时范围内复用connection在timeout 空闲的时间内就会复用相同的Request来减少握手大幅度提高了网络请求效率;如下图而在Okhttp3中是怎么做到连接池复用的,本文从源码(版本v4.9.3)角度来进行探索Okhttp3的连接池复用、清理、回收机制连接池的代码类位于okhttp3.ConnectionPool,该类作为默原创 2022-05-18 13:03:55 · 1077 阅读 · 0 评论 -
‘void android.view.View.dispatchDetachedFromWindow() on a null object reference’ 修复记录
线上报了一个void android.view.View.dispatchDetachedFromWindow()bug,日志如下Attempt to invoke virtual method 'void android.view.View.dispatchDetachedFromWindow()' on a null object reference1 android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3867)2 a原创 2020-05-19 14:35:15 · 4753 阅读 · 2 评论 -
转:解决Matcher ANR
long millis = System.currentTimeMillis(); // This checkInterval produces a < 500 ms delay. Higher checkInterval will produce higher delays on timeout. Matcher matcher = createMatche...原创 2020-03-22 18:19:37 · 323 阅读 · 0 评论 -
Android-使用@AutoService实现spi
引入(Koltin)apply plugin: 'kotlin-kapt'kapt 'com.google.auto.service:auto-service:1.0-rc6'api 'com.google.auto.service:auto-service:1.0-rc6'举例创建一个接口文件interface Book { fun name() :String}创...原创 2020-03-10 23:25:57 · 3357 阅读 · 0 评论 -
这可能是最好用、实现最简单的Android权限请求库了
为什么最好用?该工具库使用Builder设计模式,可以说是非常简单上手的工具了,使用方法如下:kotlin PermissionUtil.Builder(this) .setPermissions(Manifest.permission.RECORD_AUDIO) .setDenied { Toast.mak...原创 2019-12-13 21:30:38 · 2035 阅读 · 0 评论 -
Android-使用ContentProvider来初始化你的sdk(一)
在日常Android开发中经常会写一些sdk来供他人或者自己调用,一般这些sdk都涉及到初始化,虽然这个初始化过程我们一般都会让调用者自己来调用完成初始化过程。但是今天我们来介绍一个不需要调用者调用sdk初始化的方法,我们自己来完成这个初始化过程。下面来介绍方法创建Library首先我们创建个简单的library,这个library的功能就很简单:需要传入context提供判断是否已初始...原创 2019-10-26 20:17:57 · 2046 阅读 · 0 评论 -
在kotlin-MVP使用dagger2(v2.11+)
在Kotlin-mvp中使用dagger2(v2.11+)原创 2017-06-16 15:55:45 · 3592 阅读 · 6 评论 -
android.os.FileUriExposedException 解决方法
android.os.FileUriExposedException原创 2016-12-19 17:56:12 · 3294 阅读 · 0 评论 -
知乎日报 - 我的第一个Kotlin项目
知乎日报 - 我的第一个Kotlin项目原创 2017-07-04 22:32:50 · 1713 阅读 · 0 评论 -
RePlugin外置安装教程
RePlugin外置安装教程原创 2017-07-14 15:52:18 · 2441 阅读 · 1 评论 -
Retrofit+Rxjava 下载文件(带进度显示)
retrofit + rxjava.下载文件,带进度显示原创 2016-07-05 16:34:08 · 18793 阅读 · 11 评论 -
使用anko 抛弃XML
使用anko 抛弃XML原创 2017-07-18 10:48:18 · 691 阅读 · 0 评论 -
Gson 解析报declares multiple JSON fields named XXX解决方法
Gson 解析报declares multiple JSON fields named XXX解决方法原创 2017-07-27 14:13:51 · 16575 阅读 · 1 评论 -
在kotlin中使用retrofit+rxjava2
在kotlin中使用retrofit+rxjava2原创 2017-06-07 09:15:00 · 5265 阅读 · 0 评论 -
Android 获取NavigationBar高度
获取NavigationBar高度原创 2017-02-22 15:18:16 · 1991 阅读 · 0 评论 -
Andorid开发艺术探索读书笔记--Android四大组件
四大组件Activity原创 2017-04-05 23:21:27 · 503 阅读 · 0 评论 -
RxJava在Android的应用场景
导入//rxjavacompile 'io.reactivex:rxjava:latest.release'//rxAndroidcompile 'io.reactivex:rxandroid:latest.release'//rxLifecyclecompile 'com.trello:rxlifecycle:latest.release'compile 'com.trello:rxl原创 2016-10-08 14:18:19 · 2099 阅读 · 0 评论 -
AndroidStudio 2.2使用 Java 8 功能和 Jack 工具链的问题
问题1如果你安装官网设置Java 8 功能和 Jack 工具链的配置后遇到 Error:Could not get unknown property 'classpath' for task ':app:transformJackWithJackForInstantrunconfigDebug' of type com.android.build.gradle.internal.pipeline原创 2016-09-20 12:34:44 · 8209 阅读 · 8 评论 -
Android注解-编译时生成代码 (APT)
Android注解越来越引领潮流,比如 Dagger2, ButterKnife, EventBus3 等,他们都是注解类型,而且他们都有个共同点就是编译时生成代码,而不是运行时利用反射,这样大大优化了性能;而这些框架都用到了同一个工具就是:APT(Annotation Processing Tool ),可以在代码编译期解析注解,并且生成新的 Java 文件,减少手动的代码输入。今天我们要自己实现原创 2016-08-09 22:52:35 · 8805 阅读 · 9 评论 -
android webview将网页内容导出为图片和PDF方法
项目需求中需要把webview的网页内容导出为图片和PDF,方法如下 导出为PDF注意: 该方法只能在API19+可以使用代码如下: public void printPDF() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { // Get a PrintManager insta原创 2016-12-08 15:32:31 · 9765 阅读 · 9 评论 -
加快Android Stduio编译速度方法之一
加快Android Studio编译速度的一种方法,亲测有效原创 2016-11-01 10:57:03 · 647 阅读 · 0 评论 -
PopWindow Android 7.0 位置显示不准确解决办法
popWindow 在Android7.0上的显示位置不准确原创 2017-02-23 15:34:56 · 2509 阅读 · 0 评论 -
下滑隐藏上滑显示的Behavior
下滑隐藏上滑显示的Behavior原创 2017-03-08 21:02:27 · 1121 阅读 · 0 评论 -
带进度显示的单个和多个 Retrofit+Rxjava2文件上传
带进度显示的 单个或多个文件retrofit+rxjava2 文件上传原创 2017-03-08 21:35:17 · 4671 阅读 · 2 评论 -
解决NestScrollView嵌套RecyclerView,RecyclerView抢焦点导致页面会自己滑动
解决NestScrollView嵌套RecyclerView,RecyclerView抢焦点导致页面会自己滑动原创 2017-06-26 13:18:14 · 5848 阅读 · 0 评论 -
android webview点击input不弹出输入法解决方案
android webview点击input不弹出输入法解决方案原创 2017-08-14 10:58:19 · 4159 阅读 · 0 评论 -
recyclerView item 曝光算法(Rx版本)
功能点基于rxjava封装实现了去重,不会重复曝光,可以根据 第一个、最后一个item显示高度比来算曝光/** * recyclerView item曝光计算工具类 * Create by JokAr. on 2019-09-24. */public class ThrottleTrackingBus extends RecyclerView.OnScrollListener ...原创 2019-09-24 21:25:13 · 842 阅读 · 1 评论 -
android studio 上传android arr到本地maven仓库
新建一个maven.gradle文件apply plugin: 'maven'uploadArchives { repositories { mavenDeployer { // 本地仓库路径 repository(url: '') { //用户名,密码 ...原创 2019-06-11 11:40:00 · 909 阅读 · 0 评论 -
探究为什么Glide 可以与 Activity 生命周期绑定
用过Glide同学都知道,Glide的最大不同之处就是可以与Activity生命周期绑定,在Activity``````onDestroy时自动结束网络请求,释放资源。那么为什么Glide 可以做到与Activity绑定生命周期,并且是怎么做到到呢?我们通过一些代码来说明(代码均来自Glide源码):首先我们创建一个 LifeCycleListenerpublic interface Li...原创 2018-12-24 19:03:10 · 664 阅读 · 0 评论 -
android uri 解析获取文件真实路径(兼容7.0+)
主要是兼容7.0以后的fileProvider 把URI 以content provider 方式 对外提供的解析方法 public static File getFileFromUri(Uri uri, Context context) { if (uri == null) { return null; } switc...原创 2018-10-07 12:43:21 · 9530 阅读 · 8 评论 -
手撸一个 微信长按菜单 - FloatMenu
在日常开发中,长按某个view出现个菜单是很常见的需求,Google 也给我们提供了一些组件来实现,比如PopupMenu。但是在实际使用中还是发现他无法满足我们的所有需求。比如:产品要求长按菜单出现在手指按下的位置,额 这就头疼了,PopupMenu只能展示在view的底部或者头部。还有个问 题如果你的view过长超过一屏,那么 PopupMenu 就无法显示在屏幕里了。所以没办法,只...原创 2018-07-14 18:29:11 · 1090 阅读 · 0 评论 -
BottomSheetDialogFragment 如何设置高度和禁止滑动
主要是获取dialog 的BottomSheetBehavior 然后设置 setPeekHeight 和 BottomSheetCallback.codepublic class BottomSheetFragment extends BottomSheetDialogFragment { private Button button; private View ...原创 2018-07-07 19:58:31 · 7701 阅读 · 0 评论 -
Android国际化(多语言)实现,支持8.0
前言最近因为项目中使用了国际化,所以正好研究了下实现方法; 首先说下项目需求: - 可以随着系统切换语言而切换语言,不支持的语言显示默认 - 用户可以选择语言,且不会随着系统切换语言或者应用重启而还原虽然需求还是很简单的,但是实现起来还是遇到了不少的麻烦,首先看下效果图: 老规矩项目源码实现思路在application 的 attachBaseCont...原创 2018-04-07 22:32:42 · 10252 阅读 · 10 评论 -
android 使用距离传感器实现贴近息屏离开亮屏
注册权限要控制屏幕息屏需要用到WakeLock,所以需要在Manifest里注册<uses-permission android:name="android.permission.WAKE_LOCK" />代码实现注册传感器SensorManager sensorManager = (SensorManager) getSystemService(Con...原创 2018-03-21 12:04:30 · 5804 阅读 · 0 评论 -
怎样在不使用room情况下把本地数据转化为DataSource.Factory?
最近使用了 google 新发布的框架 Android Architecture Components,使用起来很酷,不用操心数据的持久化,自动刷新等生命周期问题。但是却遇到了个问题,这个框架一起使用很爽,但是要是使用其中的几个就会遇到些问题,比如:不使用 room sql 框架把自己的数据库数据转换为 DataSource.Factory,下面介绍如何解决的:查看了 room 源码发现了所有...原创 2018-02-10 21:25:20 · 1301 阅读 · 0 评论 -
RecyclerView 获取 item 的位置
RecyclerView 获取 item 的位置原创 2017-11-06 16:58:53 · 2470 阅读 · 0 评论 -
Android 获得最近一张拍照或截屏图片
类型微信那种,拍了一张照片或者截了屏 点击聊天加号 就会有个 弹框询问是否要发送那张图片;这里只是做了获取那张最新图片的代码,没有判断时间间隔原创 2017-10-16 11:18:51 · 4497 阅读 · 5 评论 -
HandlerThread 源码解析
HandlerThread 是什么?系统对 HandlerThread 的解释是这么一段话:Handy class for starting a new thread that has a looper. The looper can then be used to create handler classes. Note that start() must still be called.从上面原创 2017-11-01 10:49:10 · 282 阅读 · 0 评论 -
在kotlin中使用room(Room Persistence Library)和遇到的坑
在kotlin中使用room(Room Persistence Library)和其中遇到的坑原创 2017-07-01 10:46:54 · 4835 阅读 · 4 评论 -
Glide 使用Transformation 时 placeholder、error 无效解决方法
Glide提供了Transformation 可以让图片显示成各种样式,但是使用Transformation时会有个问题,比如使用CircleCrop时预览图和加载失败后显示的图并不是圆形,查阅官方看到说 transformation比不会对此过程进行转换,所以才产生了上述问题,解决方法如下(Glide V4+版本):2018-2-26 修正 public static void lo...原创 2017-09-29 14:04:17 · 5244 阅读 · 0 评论