自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 资源 (1)
  • 收藏
  • 关注

原创 线程池-源码解析

线程池有2种:ThreadPoolExecutor和ForkJoinPool。一、ThreadPoolExecutorExecutors创建线程池的方式被阿里《java开发手册》禁用了: //1.Executors.newFixedThreadPool(5); public static ExecutorService newFixedThreadPool(int nThreads) { return new ThreadPoolExecutor(nThreads

2021-08-29 23:04:02 111

原创 Handler源码解析(高工视角)

源码版本:Sourcesforandroid 30。(31的版本太新,androidstudio还没法下载)1.用法

2021-08-20 10:39:18 495 1

原创 Retrofit2源码解析(高工视角)

转载请注明出处:官网本文源码版本是2.3.0,是一个mavan项目,建议用IDEA打开。1.官网介绍2.源码解析我们根据这段代码来看源码:Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://api.github.com/") .addConverterFactory(GsonConverterFactory.create()) .build();GitHubService...

2021-08-18 22:35:03 324

原创 OkHttp3源码解析(高工视角)

本文解读的OkHttp版本是3.14.9,拉取自master分支的parent-3.14.9(tag);这是OkHttp团队将okhttp项目migrate to Kotlin前的最后一个版本。java是最...算了不拉仇恨了^_^。1.http/1.12.http/2.0

2021-08-17 19:31:43 594

原创 EventBus3源码解析(高工视角)

EventBus的Github地址1.EventBus的使用(摘自EventBus官方)2.EventBus要满足需求核心需求:进程内部发送事件补充需求: 不能引起界面卡顿不能引起内存泄露 不能引起内存抖动2.1.需求拆分2.1.1.发送事件不受线程限制(可以跨线程)2.1.2.订阅者可以指定在什么线程接收到事件(比如主线程)2.1.3.不能引起主线程阻塞(或者主线程执行权被争抢)2.1.4.必须能及时...

2021-08-12 20:14:22 141

原创 电量优化-应用待机模式(实验)

官网解释转载请注明出处:1.编写代码public class MainActivity extends AppCompatActivity { private static final int MSG_HEART = 100; private static final int HEART_DURATION = 5_000; private static File HEART_LOG_FILE; private Handler mHandler; pri

2021-08-07 23:08:37 1362

原创 android Gradle构建加速

## 1.同样的构建--初次构建永远比第二次慢初次构建(gradlew -x lint build)再次构建(gradlew -x lint build)缓存的原因,所以没事别clean project## 2.关闭lint代码检查gradlew -x lint build在我的电脑上lint检查的耗时占比80%## 3构建debug永远比构建release快初次构建(gradlew -x lint buildDebug)再次构建(gradlew -x ..

2021-07-17 21:36:08 419

原创 Cause: invalid type code: 1C

使用Android studio 4,创建项目编译报错:Cause: invalid type code: 1C新建项目gradle插件版本默认是4.0.0只需将gradle-wrapper.propperties中gradle版本改成6.5的

2020-06-04 18:24:41 4202 4

原创 gitosis 上手指南[补充]

引用:gitosis上手指南根据本博文实操成功后,补充下:1.生成公钥时,不要带comment,即-c "内容",否则会gitosis init失败的!2.服务器安装git后,最好也配置下全局用户名和邮箱(如git config --global user.name "张三",git config --global user.name "your email")3.初始化gi...

2020-02-28 17:10:37 183

原创 RecyclerView完美条目点击效果selector

通过变更条目背景Drawable做selector达不到你们美丽UI工程师的要求?(通过变更背景的selector无法达到需求),给你一个条目容器,/** * Jay * 可以感知press和 upPress事件的ConstraintLayout */public class PerceptPressedConstraintLayout extends ConstraintLayou...

2019-11-18 17:43:18 790

原创 改变Button的样式

改变Button的样式是很困难的,你改换个思路:使用2个size一样的Button(只是样式不同),通过切换visible达到改变样式目的典型场景:UI说要一个按钮可点击和不可点击时样式不同(肯定要不同啊,怎么切换),不可点击的样式(备胎按钮)盖在可点击按钮上,要可点击时让备胎按钮不可见,否则备胎按钮可见.(备胎按钮这个名字是不是很贴切?)...

2019-11-18 17:31:34 1336

原创 使用ViewPager2前必看

1.选择自定义view还是Fragment作为页(page)?答:只有当UI设计的各页的布局都不一样,无法分类,即无法各页无法重复利用时,适合选择Fragment作为页(page),其他情况请使用自定义view2.如果不设置setOffscreenPageLimit(),ViewPager2将使用灵活的预加载策略(原先的ViewPager会默认setOffscreenPageLimit(1...

2019-11-18 17:02:31 1616

原创 判断ViewPager2的页(自定义View或fragment)被预加载或被回收

1.如果使用自定义view作为页,onDetachedFromWindow和onAttachedToWindow分别表示被回收和被重新利用,前者是回收资源的时机,后者是重新初始化的时机2.如果使用Fragment作为页,回收资源和重新初始化时机都应该在onRsume方法(如何保证visible-可见时会回调onRsume详见链接),onDestroyView方法也应该做回收资源工作3.Vi...

2019-11-18 16:56:04 2166

原创 判断ViewPager2哪页(pageView)当前visible(可见)

1.在adapter的convert方法中给自定义view(pageView)设置标签(pageView.setTag(adapterPosition))2.通过ViewPager2.findViewByTag(adapterPosition)可以获得预加载范围内的pageView,如您设置的预加载为setOffscreenPageLimit(1),则viewPager2循环利用的pag...

2019-11-18 16:30:39 2266

原创 判断ViewPager2的哪个fragment可见visible

1.创建fragment时,将fragment作为成员变量持有2.监听tablayout或viewPager2的pageChange方法知道哪个fragment被selected3.调用getSupportFragmentManager().beginTransaction().setMaxLifecycle(fragment, Lifecycle.State.RESUMED),fragm...

2019-11-18 16:15:09 2998

原创 Android 秒开app(快速启动 减少冷启动时间)

借鉴于: 如何快速启动android app1.主题背景图splash_background,本主题设给LUANCHER的activity<style name="SpalshTheme" parent="AppTheme"> <item name="android:windowIsTranslucent">false</item> <

2018-03-08 15:23:40 2641

原创 拆分包笔记

问题1.android5.0(API21)以下会存在65535方法数分包的问题:方法数限制65535;LinearAlloc限制4M(Android2.2)/5M(Android2.3)/8M/16M(Android4.0 /API level 14 )google官方方案:1.android {compileSdkVersion 21buildToolsVersion "21.1.0"d...

2018-03-08 14:06:53 295

原创 软键盘弹出时将输入框上移

一. //软键盘弹出时将edittext上移 getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);二./*关闭软键盘*/private void closeSoftKeyboard() { View view = JoinMeetingActivity.this.

2018-02-07 13:16:50 909

原创 2018.1月学习笔记

一.AndroidAnotaion的使用1.project-->build.gradle-->buildscript-->dependencies内classpath 'com.android.tools.build:gradle:2.3.0' >= 2.3.02.project-->build.gradle-->allprojects-->repositorys内添加mavenL

2018-01-11 14:33:28 1665

DiscLruCache

DiscLruCache包:本包提供磁盘存储优化策略:最近最多次使用的资源优先得到持久化存储

2018-04-28

空空如也

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

TA关注的人

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