自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 RecyclerView优化总结

一、铺垫 1.RecycleBin 先介绍一个简单的复用池实现,它通过SparseArray类型的缓存变量实现,注意它并不是线程安全的,只能在UI线程中使用。 public class RecycleBin<T> { private final SparseArray<Q...

2019-09-26 17:58:30

阅读数 88

评论数 3

原创 Android 页面销毁、重建与数据恢复

Android页面销毁、重建与数据恢复一、页面销毁和重建1.页面销毁2.页面重建和数据恢复3.模拟页面销毁和重建二、一些拓展的问题1.TextView的数据恢复2.Fragment的数据恢复3.数据如何存储和恢复三、参考文章 一、页面销毁和重建 1.页面销毁 Android的页面销毁可以分两种,正...

2019-06-04 20:43:25

阅读数 381

评论数 1

原创 RecyclerView局部刷新和原理介绍

RecyclerView局部刷新和原理介绍一、引言二、局部刷新的正确使用姿势三、局部刷新的原理3.1 RecyclerView与Adapter建立观察者模式3.2 onItemRangeChanged()3.3 dispatchLayoutStep1()3.3.1 processAdapterUp...

2019-03-08 14:18:02

阅读数 1004

评论数 2

原创 Matrix框架慢函数检测和分析

一、引子   Matrix 是一款微信研发并日常使用的 APM(Application Performance Manage),当前主要运行在 Android 平台上。Matrix 当前监控范围包括:应用安装包大小,帧率变化,启动耗时,卡顿,慢方法,SQLite 操作优化,文件读写,内存泄漏等等...

2019-03-01 15:51:25

阅读数 586

评论数 0

原创 说一说线程池对象的回收

一、引子   现在的业务开发中用到了ReactNative,热更新的代码下发使用的是GeckoClient框架。之前开发同学的实现是在Rn的基类Fragment和Activity中,创建一个GeckoClient成员变量,然后进行更新。这样,每个Rn的Fragment和Activity都有一个自...

2019-02-26 18:20:35

阅读数 966

评论数 0

原创 Java与Js通信总结

在android hybrid app开发过程中,经常要面对的一个问题是java与js的通信。android程序是由dalvick虚拟机来运行,javascript是由webview的webkit引擎来解析执行,本质上应该是dalvick虚拟机的一部分,所以两者通信是要看android底层api留...

2016-12-05 17:15:55

阅读数 2609

评论数 0

原创 EventBus源码分析

前言、提问 1.EventBus如何使用? 2.EventBus的执行流程? 3.onEvent****(Object o)与onEvent****(具体的类型)比较,哪个效率更高?各有什么好处? 4.EventBus注册查找等是在UI线程实现吗?EventBus的消息处理如何实现在UI线...

2016-03-22 19:46:58

阅读数 762

评论数 0

原创 xml布局中系统View标签为何不需要带包名

一、引子 在xml文件中,如果想使用TextView、WebView、Button、RelativeLayout等系统View,直接写类名即可,但如果是自定义的View,则需要写带有包名的全类名,否则运行时会报错。这是为什么呢? 二、查找原因 我们知道xml文件都是通过LayoutInfla...

2019-10-09 21:02:16

阅读数 11

评论数 0

原创 Activity对象创建到显示到屏幕

代码基于Android 28(9.0、pie)分析 一、引子 在Activity启动流程分析一文中,分析了从startActivity()到Activity对象创建的过程,之后分析下Activity对象创建到显示到屏幕的过程。 二、Activity对象创建到显示到屏幕 2.1 activity.a...

2019-10-09 16:52:31

阅读数 34

评论数 0

原创 Android一些细节点

1.LayoutInflater类的inflate(@LayoutRes int resource, @Nullable ViewGroup root, boolean attachToRoot)方法 inflate(resource, root)与inflate(resource, root, ...

2019-09-17 15:22:22

阅读数 10

评论数 0

原创 Activity启动流程分析

代码基于Android 28(9.0、pie)分析 一、startActivty()到Activity对象创建 Activity.startActivity()、Activity.startActivityForResult()、Context.startActivity()调用的都是Inst...

2019-09-08 21:20:37

阅读数 42

评论数 0

原创 (未完)Android 点击事件响应总结

一、从Activity/Dialog到DecorView Activity或Dialog先响应到dispatchTouchEvent()事件,拿Activity为例 public boolean dispatchTouchEvent(MotionEvent ev) { if (ev....

2019-09-08 15:06:32

阅读数 42

评论数 0

原创 RecyclerView.RecycledViewPool+BaseQuickAdapter+FooterLayout造成IllegalStateException

一、RecyclerView有一个优化设置,如果多个RecyclerView拥有相同的item布局,可以通过使用一个RecycledViewPool来减少缓存的View数目。 public void setRecycledViewPool(@Nullable RecycledViewPo...

2019-09-05 22:20:11

阅读数 71

评论数 0

原创 DialogFragment的onDismiss()中为何无法获取到View的位置

一、问题发现 Android有一种切换输入法显示和隐藏的方法 val mInputManager = context?.getSystemService(Context.INPUT_METHOD_SERVICE) as? InputMethodManager mInputManager?.t...

2019-09-05 21:26:00

阅读数 66

评论数 0

原创 由TransactionTooLargeException引发的一些思考

引子 我所在部门的Android app维护时间比较久,一直保持在targetSdkVersion 22。最近oppo、vivo几家应用商店停止targetSdkVersion低于26的app更新,迫不得己,同事升级了targetSdkVersion到26,主要进行了权限处理、FileProvid...

2019-05-19 22:35:36

阅读数 366

评论数 0

原创 使用AsyncLayoutInflater预加载,加快列表渲染

引子 列表卡顿是一个很常见的问题,通常的理解是滑动过程中卡顿,有很多常规的处理方法,从最简单的复用到降低布局复杂度到图片加载。本文介绍下列表初次填充数据时卡顿的处理方法。 AsyncLayoutInflater 在查找页面fps过低的问题中,我发现在列表首次填充数据进行显示时,由于列表中将要...

2019-05-13 11:31:39

阅读数 443

评论数 4

原创 View.getContext()从何而来

一、引子 曾经遇到一个问题,使用View的Context变量调用startActivity()方法,出现一个异常:“Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW...

2019-05-10 19:07:12

阅读数 351

评论数 0

原创 kotlin if判定分支中有范型方法和null返回造成的空指针

写了一段代码,造成了空指针 WallpaperUtil.displayWallpaper(pageLifecycle, item, helper.getView(R.id.wallpaper_image), if (item.isHot()) null else helper.getView(R....

2019-03-17 21:00:29

阅读数 118

评论数 0

转载 Improve RecyclerView Performance

原文地址:https://medium.com/@farshidabazari/improve-recyclerview-performance-ede5cec6c5bf In my last project, I’ve been working on an application that h...

2019-03-11 11:26:47

阅读数 39

评论数 0

原创 RxJava防重复点击原理

(代码基于rxbinding-1.0.1) 使用RxJava实现View防重复点击功能比较简单 fun View.noDoubleClick(action: Action1&amp;amp;amp;lt;Void&amp;amp;amp;gt;) { @Suppres...

2019-02-28 15:09:14

阅读数 774

评论数 0

原创 说一说Glide.with()

一、引子   Glide框架是google推荐的Android图片加载框架,使用起来非常轻便,比如以下代码就可以实现在fragment内,以fitCenter方式加载图片,未加载成功前显示placeholder。 ```java Glide.with(fragment) .loa...

2019-02-26 18:17:12

阅读数 2248

评论数 0

原创 一次ThreadPoolExecutor中maximumPoolSize误用

之前对于ThreadPoolExecutor的几个参数corePoolSize,maximumPoolSize,keepAliveTime,BlockingQueue的理解是: corePoolSize:核心线程数 maximumPoolSize:线程池最大线程数,包括coreThread,所...

2018-12-29 18:41:28

阅读数 1086

评论数 0

原创 不当使用BaseQuickAdapter和notifyItemRemoved出现IndexOutOfBoundsException

1.描述:RecyclerView BaseQuickAdapter notifyItemRemoved()在使用EmptyView,并且有headerView时,删除列表中唯一一个元素会崩溃 2.崩溃详情: java.lang.IndexOutOfBoundsException Incon...

2018-12-21 20:46:50

阅读数 402

评论数 0

转载 Android软引用(SoftReference)与LruCache

android缓存实现 弱引用实现缓存在android中并不可靠

2017-12-06 14:54:29

阅读数 165

评论数 0

原创 Thread的join()方法

看到一个多线程的编程问题,如何让线程A、B、C顺序执行,即线程A执行完后,线程B开始执行,线程B执行完后,线程C开始执行。 我的实现想法是使用单线程的线程池,依次将RunableA、RunnableB、RunnableC三个Runnable submit()。答案给的是使用Thread的join...

2016-12-20 18:29:00

阅读数 433

评论数 0

转载 异常分析初探

转载于:异常分析初探 楚岩 2016-01-29 14:08:20异常在Java中是非常重要的一个内容,了解异常有助于我们写出更加健壮的代码,本文将探讨一下几个问题:1 异常是怎么被JVM捕获的? 2 新建异常实例是否耗时?为什么会耗时?是否能够避免? 3 为什么不推荐使用printStac...

2016-12-06 16:49:59

阅读数 385

评论数 0

原创 hook Activity的mInstrumentation变量

hook 动态代理

2016-09-06 21:18:06

阅读数 1060

评论数 0

原创 慎用AsyncTask

AsyncTask 卡顿

2016-04-27 16:23:30

阅读数 1809

评论数 0

原创 android 4.0.3和4.0.4上webview只显示一屏问题的定位

js android 只显示一屏

2016-04-14 19:17:30

阅读数 881

评论数 0

原创 一个nullPointer bug的修复

变量要初始化 断点设置 状态变迁

2016-04-07 16:07:23

阅读数 895

评论数 0

原创 使用系统图片选择页面

ActivityNotFoundException try catch

2016-04-06 19:08:51

阅读数 1234

评论数 0

原创 Fragment getActivity()返回null

Fragment getActivity() null AsyncHttpClient 异步请求

2016-04-05 15:55:58

阅读数 1285

评论数 0

转载 双重检查锁定与延迟初始化

单例 重排序 volatile 静态内部类

2016-04-01 14:52:31

阅读数 497

评论数 0

转载 理解Java垃圾回收机制

java 内存回收

2016-03-25 11:05:45

阅读数 750

评论数 0

原创 静态语句块、构造语句块与构造方法执行顺序

static语句 构造语句 构造方法执行顺序

2016-03-18 19:19:53

阅读数 1106

评论数 0

转载 简单的WebView自适应并嵌套在ScrollView里

文/SoloHo(简书作者) 原文链接:http://www.jianshu.com/p/d21989bea448 著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。 因为某种原因,我们总是需要展示一些复杂的文本,Html.fromHtml()已经不能满足我们的需求,比如后台...

2016-03-15 11:37:28

阅读数 674

评论数 0

原创 判断当前手势下滑上滑

判断当前手势是上滑还是下滑 1.定义全局变量 sumDy 和dy 2.DispatchTouchEvent()中的move事件中更新dy和sumdy值 dy = py - cy;//py为上次触碰事件y值,cy为当前触碰事件中y值 py = cy; sumdy += dy; if(sumdy *...

2016-03-10 15:31:24

阅读数 1031

评论数 0

原创 activity启动卡顿问题

切换页面卡断问题 问题:由于项目需求经常变动,使用Activity包含Fragment来实现,在Activity的onCreate中创建加载Fragment。这种实现在性能差的手机上,启动新页面切换缓慢,经常出现用户点击按钮后,2-3s后才出现新页面。 分析:使用TraceView发现,在性能差...

2016-03-09 12:03:38

阅读数 3170

评论数 0

原创 PullToRefreshListView总结

PullToRefreshListView工作原理: 整体是个LinearLayout,包含一个Header,一个Footer,中间夹着一个ListView,其中Header和Footer的位置居于不可见范围内。 以竖向下拉为例,当接收到下拉手势时,如果ListView内容居于置顶位置,则Li...

2016-03-02 20:16:28

阅读数 1407

评论数 0

原创 “同时”启动两个Activity

Activity1“同时”启动Activity2 Activity3,这个过程中Activity栈的结构是如何变化的? Intent intent = new Intent(this, MyActivity2.class);startActivity(intent);Intent intent2...

2016-02-23 14:22:16

阅读数 4331

评论数 1

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