自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 android 检测工具 Android profiler之CPU profiler学习

android 3.0之后采用android profiler替代了Android monitor,其中非常有用的一个就是CPU profiler,在页面加载耗时的检测上非常有用,善于利用可以帮助我们检测加载过程中的耗时方法从而找到优化点,提升页面加载性能。...

2020-03-17 00:33:43 704

原创 andrioid 依赖冲突解决方法总结

最近在导入一个包的时候,发现一直报失败,原因是除了在主工程里引用该项目项目,在某个子项目里也引用了该项目,依赖添加使用的是compile不是implementation,并且写死了一个比较老的版本,两个版本的manifast不相同,在merge的时候出了问题,总结一下android依赖方法的区别以及如何查看依赖。 根据google的文档,在android 3.0版本...

2020-03-07 22:23:00 289

原创 ViewPager 事件分发探究

在ViewGroup的dispatchTouchevent中,如果把event传递给子View没有处理掉,则会返回到当前View的ontouchEvet处理。这里有两个疑问为什么子View没有处理掉events 子View没有处理掉为什么ViewPager能处理 对于第1个问题,直接贴View的源码,本次探究基于android 28版本的View,当事件传递到最...

2020-03-01 20:50:38 344

原创 java 线程池总结

一 线程池1.构建线程池的参数2.allowCoreThreadTimeOut二 线程池代理1.threadfactory

2020-02-16 16:59:05 96

原创 Window.FrameMetricsListener接口探究

Window.FrameMetricsListener是android 在API 24时添加的新功能,可以给相应的window设置,获得该 window每一帧的渲染时长数据,通过这个回调可以监控页面的性能。并且与Choreographer.FrameCallback相比,FrameMetricsListener不会在每一次收到垂直同步信号都把时长打印出来,只有在画面发生变化时才会记...

2020-02-16 16:11:30 763 1

原创 android 系统自带的卡帧警告

在Choreographer内部有系统自带的卡帧警告,在Choreographer内部的doFrame()方法中,当这一帧与上一帧的间隔大于SKIPPED_FRAME_WARNING_LIMIT时会在info里打出log。 SKIPPED_FRAME_WARNING_LIMIT是Choreographer内部的静态变量,从SystemProperties中取出,如果没有的...

2020-02-16 16:08:21 292

原创 Android 状态栏适配 以及 windowInsets探究

View有一个属性是FitsSystemWindows,既可以通过在xml里设置android:fitsSystemWindows="true"设置,也可以通过View的setFitsSystemWindows方法设置,主要的作用是适配状态栏的高度,一旦设置了这个属性,Margin的设置就会失效,这个View的Margin值会变成windowInsets里的值(一般来说对于收集只有top值...

2020-02-08 23:25:18 7571

原创 FragmentPagerAdapter 以及 FragmentStatePagerAdapter 对比 以及 PagerAdapter探究

FragmentPagerAdapter以及FragmentStatePagerAdapter都是继承自PagerAdapter,可以看到其中FragmentPagerAdapter和FragmentStatePagerAdapter覆盖的方法都不多,主要是instantiateItem() destroyItem() setPrimaryItem() finishUpdate...

2020-02-05 23:42:04 785

原创 ViewGroup 的 requestDisallowInterceptTouchEvent方法探究

View的事件传递机制是从activity到window再到ViewGroup逐级传递到最底层的View的。具体是会调用View的dispatchTouchEvent方法,里面又分为两个步骤。首先是onIntercpetTouchEvent,判断是否会拦截这个事件,不拦截的话会接着往子View传递,拦截的话则会调用当前View的onTouchEvent方法。 在View的dispa...

2020-02-02 17:51:09 396

原创 Asynctask 未运行探究

asyncTask核心是构建了一个线程池(基于android API 28),核心线程最小是2,最大是4或者CPU数量减1中更小的值。任务队列是一个容量为128的LinkedBlockingQueue,并且没有设置超过队列数时的应对措施,线程池的RejectedExecutionHandler(放入队列的任务大于任务数时的回调)是默认的defaultHandler,AbortPolic...

2020-02-01 23:08:41 368

原创 fragment saveState 以及 restoreState探究

在android开发过程中使用ViewPager+Fragment开发页面是常见的情况,但在开发过程中碰到fragemnt正常显示,而fragment的变量却显示为null,对此进行探究。 查询答案发现是与fragment引用的获取有关,是由FragmentManage的saveState 以及 restoreState引起的,记录一下。 首先是有问题的引用获取方...

2020-01-31 22:07:22 985

原创 Android FPS监测 方法总结

1.gpu呈现模式分析 打开开发者模式,选择gpu呈现模式分析。可以在屏幕上看到竖条,代表每一帧所耗费的时间,不同的颜色代表在绘制的不同阶段的耗时,可以据此判断哪些阶段存在问题。横向的绿线代表16.67ms的基线,只有耗费的时长小雨16.67ms才不会出现丢帧的情况。 2.adb shell dumpsys gfxinfo ...

2020-01-30 21:59:27 5743

原创 android 获得View的宽高为0的探究

我们知道在activity的onCreate里去获取View的宽高会是0,在开发过程中碰到过异步在Activity的runOnUIThread方法的runable里获取宽高,最终可能取得的结果为0,这是因为runOnUIThread是给activity的mHandler设置回调。与View.post不同的是,activity的mHandler在onCreate时就已经开始工作了,因为...

2020-01-29 20:54:04 826

空空如也

空空如也

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

TA关注的人

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