自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Android中Bitmap的简单分析

Bitmap数据存储位置在Android 2.3.3(API10)之前,Bitmap的像素数据存放在Native内存Android3.0之后8.0之前,Bitmap的像素数据被改成放在了Dalvik Heap(java堆)中Android8.0之后,Bitmap的像素数据回到Native内存中,但是google改进后可以随着java对象的释放而被快速释放(并且新增了图片内存,提高了绘制效率)为什么会放回native层存natvie层用的是一个新的hardware的库,估计是为了更好的发挥硬件性

2020-12-31 22:59:40 343

原创 常见优化:资源冲突的处理

前言什么是资源冲突引用第三方库或者子Module时,这些依赖库中的资源可能会与主工程本身的资源发生重名冲突,从而发生资源互相覆盖的情况容易导致什么问题项目引用drawable资源、string资源等可能不会按照自己预期的效果来显示layout资源如果错误,甚至会导致无法通过id获取到对应控件,从而触发如空指针等一系列崩溃问题以上的问题都是可能需要到运行时才会发现的处理办法修改资源前缀可以通过在model的gradle文件里加上下面的字段android{ resourcePre

2020-11-27 19:22:52 1677

原创 Glide源码解析3:缓存相关

问题Glide分别有哪些缓存Glide在什么时候会从缓存中读取数据Glide在什么时候会从存入缓存Glide有哪些缓存弱引用缓存ActiveResourcesLru缓存LruResourceCache硬盘缓存DiskLruCache如何从缓存中拉取数据内存缓存在SingleRequest发起任务时 public <R> LoadStatus load( GlideContext glideContext, Object model,

2020-11-15 23:07:30 198

原创 Glide源码解析2:数据加载

问题上文已经简单解释了一个Request的生成过程,本文目标如下Glide在load中传入的数据最后是如何转成显示的Drawable的传入的数据如何在ImageView上显示注意由于代码分支过多,会删减一些源码便于理解流程解析Request.begin书接上文,SingleRequest的begin被调用之后//SingleRequest.javapublic void begin() { //这里的方法按照注释来说是如在我们调用了notifyDataSetChanged之后,

2020-11-15 21:04:44 215

原创 Glide源码解析1:加载请求Request是如何生成的

问题我们正常调用Glide时如何开始的异步加载Glide如何与生命周期相关的简单使用Glide.with(this).load(R.drawable.test).into(iv_image)流程解析Glide.with()有多个with方法,这里只以参数是context的来举例//Glide.java//通过RequestManagerRetriever实例去获取对应context的RequestManagerpublic static RequestManager with(@N

2020-11-14 21:12:10 305

原创 SharedPreferences源码分析

分析达成目标了解基本实现SharePreferences是否线程安全SharePreferences的mode参数是什么了解apply与commit的区别导致ANR的原因Android8.0做了什么优化基本实现简单使用先从如何简单使用开始val sp = context.getSharedPreferences("123", Context.MODE_PRIVATE)//通过SharedPreferences读值val myValue = sp.getInt("myKey",-1

2020-10-30 00:17:10 179 1

原创 RecycleView的Item曝光事件、曝光时间、阅读进度上报

原因工作中一般会针对页面展示与点击事件进行数据的上报,用于给运营分析用户行为。不过这次要求的会多一些,要求统计如下内容列表内每个商品的封面曝光次数列表内每个商品的封面曝光总时间列表的阅读进度问题点如何判断一次商品的封面曝光?判断时机:①在RecycleView滑动时,即通过OnScrollListener判断。②在界面切换时生命周期判断如何判断商品出现:RecycleView的LinearLayoutManager有findFirstVisibleItemPosition和findL

2020-09-08 22:10:07 1363

原创 kotlin类的学习(对象表达式、伴生、接口)

对象表达式object通过object可以快速声明一个对象fun printAddress() { //相当于是声明了一个Address的子类,并重写其print方法 Shop().addAddress(object : Address(21){ override fun print() { print("new address = $id") } }) //快速声明一个匿名的含有x和y的对象 val new

2020-08-24 00:43:02 117

原创 事件分发典型bug:RecycleView不同方向滑动嵌套问题解决

简介现象在工作中碰到了一个易用性的问题,当一个横向滑动的HorizonRecycleView(注意这里只是一个普通的加了日志打印的RecycleView,并没有改动其自身逻辑),每个Item都包含了一个纵向滑动的VerticalRecycleView(同上)时,若此时想去滑动纵向的VerticalRecycleView,很容易触发到HorizonRecycleView的横向滑动。可能说起来有点绕,直接看图可能更明显点。代码代码比较简单,A与B都使用的是LinearLayoutManager,这里展

2020-07-21 02:41:26 2003 1

原创 常见问题分析:Fragment在Activity被回收后重叠

简介现象我们常在使用fragment时偶现莫名其妙的重叠现象,分明正确的按照顺序调用了add、hide以及show方法代码代码相对比较简单,即通过点击button触发fragment的展示与隐藏class MainActivity : AppCompatActivity(), View.OnClickListener { var homeFragment = HomeFragment() var favoriteFragment = FavoriteFragment()

2020-07-06 02:12:40 863 1

原创 LeetCode初级算法精选解答提示

LeetCode初级算法精选解答提示easy7.翻转整数翻转的方法转化为string后转为char[]每次除10,并取余数,这样得出来的余数就是从个位数开始的判断翻转的整数是否会越界的方法先把值存储在Long中,最后再判断是否在Int的界限之外直接try catch…该方法并不推荐如果是上面的第二种翻转方法,可以在每次计算结果值之前,判断当前的结果值是否在边界值/10之外,...

2019-04-08 17:56:40 773

原创 Conflict with dependency 'com.android.support:support-annotations'问题解决

在Android Studio构建时,构建老是会莫名其妙的报错,报错信息如下:Error:Execution failed for task ':app:preDebugAndroidTestBuild'.&gt; Conflict with dependency 'com.android.support:support-annotations' in project ':app'. Resol...

2018-04-28 23:49:48 6195 1

原创 Android开发艺术探索第一章笔记

Android开发艺术探索第一章笔记,Activity生命周期

2017-11-05 20:15:32 270

原创 FLAG_ACTIVITY_CLEAR_TOP会重启Activity的问题解决

FLAG_ACTIVITY_CLEAR_TOP会重启Activity的问题解决在工作过程中,碰到了如下的问题ActivityA启动了ActivityB,ActivityB又启动了ActivityC。在ActivityC中需要通过FLAG_ACTIVITY_CLEAR_TOP回到ActivityA,此时通过Log发现ActivityA没有正常结束,而是直接重新走了onCreate流程,也没有走onDe

2017-10-16 15:22:20 1559 1

原创 Handle、Message、Looper

Handle、Message、Looper源码分析

2017-10-04 19:56:36 447

原创 类加载器ClassLoader

类加载器ClassLoader

2017-10-03 18:25:18 348

原创 动态加载总结

对动态加载的简单总结

2017-10-03 18:24:08 425

原创 Android动画的总结

包括了逐帧动画、补间动画、属性动画以及Intepolator、TypeEvaluation、ValuePropertyAnimator的简单介绍

2017-10-01 23:07:59 273

原创 Error running app: Default Activity not found解决办法

最近开始尝试从eclipse转移到Android Studio上来,总是遇到一些小bug,这里自己总结一下,以防以后给忘了最新写了一个apk时,点击运行出现了Error running app: Default Activity not found的提示,明明是个简单的activity而已。看这个提示,很明显是没有找到可以默认启动的activity到AndroidManifes

2017-10-01 10:58:51 6702

原创 dispatchTouchEvent总结

看了大神的对有关dispatchTouchEvent的源码分析后(http://blog.csdn.net/yanbober/article/details/45887547),自己总结一下1、每个View的按键都是通过dispatchTouchEvent来分发,onClick、onTouch也都是在该方法中调用的。2、dispatchTouchEvent返回false,则之后的actio

2017-09-30 15:54:28 1947

空空如也

空空如也

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

TA关注的人

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