自定义博客皮肤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)
  • 收藏
  • 关注

转载 (转载)Handler机制原因,主线程looper.loop()为什么不阻塞主线程

Handler,Message,looper 和 MessageQueue 构成了安卓的消息机制,handler创建后可以通过 sendMessage 将消息加入消息队列,然后 looper不断的将消息从 MessageQueue 中取出来,回调到 Hander 的 handleMessage方法,从而实现线程的通信。 从两种情况来说,第一在UI线程创建Handler,此时我们不需要手动开启looper,因为在应用启动时,在ActivityThread的main方法中就创建了一个当前主线程的looper,

2021-09-08 21:56:11 1232

原创 Android ThreadLocal之谜

先贴个源码:ThreadLocal.java 其实这个类相当的简单,如果你了解HashMap的原理的话,这个类轻松拿下。 备战中...

2021-09-03 20:41:51 204

转载 (转载)Android性能优化

内容很全收藏下。 https://www.jianshu.com/p/797395731747

2021-09-02 22:31:57 187

转载 (转载)Java volatile关键字最全总结:原理剖析与实例讲解(简单易懂)

目录 一、简介 二、并发编程的3个基本概念 三、锁的互斥和可见性 四、Java的内存模型JMM以及共享变量的可见性 五、volatile变量的特性 六、volatile不适用的场景 七、volatile原理 八、单例模式的双重锁为什么要加volatile 一、简介 volatile是Java提供的一种轻量级的同步机制。Java 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量,相比于synchronized(synchronized通常称为重量级锁),volatile

2021-08-29 21:55:57 202

原创 Android并发之Executor(线程池)家族(二)之AtomicInteger

线程并发,那就牵扯到内存共享的问题,在并发编程中,有三个理念:原子性、可见性、有序性。这里分享一个转载。

2021-08-29 21:52:50 739

转载 A Java Fork/Join Framework(Doug Lea 关于java Fork/Join框架的论文翻译)

转载:https://blog.csdn.net/dhaibo1986/article/details/108727249 A Java Fork/Join Framework Doug Lea State University of New York at Oswego Oswego NY 13126 315−341−2688 dl@cs.oswego.edu 摘要 本文描述了一种Java框架的设计、实现和性能,该Java框架用于支持一种并行编程风格,在该并行编程中,可以通过以下方式解决问题:

2021-08-27 21:51:32 356

原创 Android并发之Executor(线程池)家族(一)

线程池在移动端开发过程中,在提高性能、充分利用GPU方面,有着不错的表现。Executor是个比较庞大的家族,Executor的子孙众多。常用的ThreadPoolExecutor、FixedThreadPool、CachedThreadPool、ScheduledThreadPool、SingleThreadExecutor等。 Executor是只有一个void execute(Runnable command)为实现的方法的接口类,是实现Android并发编程线程池框...

2021-08-27 21:47:46 1733

转载 RecyclerView小记

RecyclerView使用和封装过很多次了。但从来没有去认真研究过源码,一是没时间,二是后面的工作原因,不怎么接触到。 今天来简单整理下。 RecyclerView可以说是ListView替代品了,就是因为他能做到的,ListView做不到,ListView有的,他都有。 简单记 ListView和RecyclerView的区别,还是很大的。 第一,直接父类的不同,RecyclerView直接继承ViewGroup。 1、ListView ex...

2021-08-25 22:25:36 183

原创 ArrayList小记之新手必须知道的

这个非线程安全的集合,大家都用来临时的存储数据,都用烂了。没有人不会的,甚至连面试都不会问到了。 ArrayList之扩容 ArrayList,是维护了一个数组的一个集合类。既然是数组,那就遇到扩容的问题。那他是怎么扩容的呢?Arrays.copyOf(...)........ private void grow(int minCapacity) { // overflow-conscious code int oldCapacity = elementDat

2021-08-24 23:22:30 182

原创 ListView的某个角落-面试官都不知道的东西

ListView,在RecycleView出来之前,使用率100%,有么有? 面试中也是经常问的一个问题。大家都知道,ListView只显示屏幕上的Item + 1。不少人也知道RecycleBin的存在,也知道他是缓冲超出屏幕外的item。 那,今天先看下RecycleBin到底里面有啥,这个也是AbsListView调度ItemView的逻辑。 1、mActiveViews // 没有争议,是活动的View,至于哪里赋值的,你去ListView中layoutChildren方法去找答案。 2、

2021-08-23 22:48:08 187

原创 Java 泛型中? extends 、? super简单理解

public class Person {} // 超类 public class Male extends Person {} public class Female extends Person {} public class Boy extends Male {} public class Gril extends Female {} 就这?就这! List<Male> males = new ArrayList<Boy>(); List<Boy.

2021-08-22 21:56:33 552

原创 Android中,序列化,持久化笔记

Android中,用于序列化的就是Parcelable和Serializeable。Serializeable是Java的,Parcelable是Android特有的。 1、Serializeable 比较简单的序列化方式,对象直接implement它即可,如果其中的字段不需要序列化,前面加上transient关键,表示短暂持有,不需要持久化。 2、Parcelable 这个相比Serializeable要复杂点,需要自己写一些东西,集体自己看,但要注意的是,序列化和返序列化的时候,要意义对应。如.

2021-08-22 16:16:57 199

原创 Android总是闪退,怎么办?Android崩溃机制。

闪退,程序退出这些都是开发中最常见的了。开发过程中,那还好说,遇到就解决被,主要还是应对上线问题。各大平台的捕获机制不少,用就完事了。但,我还是想知道Android崩溃机制。 所谓的闪退就是Android系统执行app的时候,发生不可以进行下去的步骤,追溯到最底层,就是堆栈内存的那点事咯。 这里推荐个简书的文章:https://www.jianshu.com/p/37b3c9f950dd 当然还有其他很优秀的文章,大家都搜索下。我这里也不贴出来了。 UncaughtExceptionHandler

2021-08-22 11:06:00 2079

原创 Java-对递归的理解

递归相信很多人都用过,但所有人都知道递归的秘密吗? 这里我分2中情况理解下递归。 先看段代码: 例1: private static void calc(int num) { System.out.println("num:" + num); num--; if (num < 2) { return; } calc(num); System.out.println(

2021-08-22 09:27:36 181

原创 AIDL实战以及底层过程分析

AIDL大家都应该玩过吧,较大项目中,也是经常用到的。一个app的多进程架构,AIDL是必不可少的。不喜欢废话,来,和我一起刚。 1、使用binder跨进程通信 先来一套代码。 a、服务端 package com.wanjf.baseVO; import android.os.Parcel; import android.os.Parcelable; // 没啥好说的。 public class Person implements Parcelable { private String

2021-08-22 00:01:39 377

原创 排序算法之基数排序(桶排序)

排序问题,一直是算法中的比较好玩的东西。 今天总结下这个以空间换时间的经典排序算法。 1、算法图解 以这个数组为例{53, 3, 542, 748, 14, 214} 使用基数排序, 进行升序排序 第1轮排序: (1) 将每个元素的个位数取出,然后看这个数应该放在哪个对应的桶(一个一维数组) (2) 按照这个桶的顺序(一维数组的下标依次取出数据,放入原来数组) 最终得到:数组的第1轮排序 arr = {542, 53, 3, 14, 214, 748} ...

2021-08-21 13:24:02 138

原创 LruCache的核心理解

1、maxSize 很灵活,可是数量,也就是说,我maxSize是100,那就不能超过100;当重写了protected int sizeOf(@NonNull K key, @NonNull V value) 那那统计的阶数,就是sizeOf返回的值,比如这里的100,那就只能存100/3个数据,这个就是内存管理神器的原理之一; LruCache<String, Integer> lruCache = new LruCache<String, Integ.

2021-08-21 13:00:42 340

原创 Handler核心理解

Handler可能是面试Android被问的最多的把? 大部分都知道Handler、MessageQueue、message、Loop的关系,因为要面试嘛。没办法。那今天看下Handler这一块的东西核心在哪里? Handler可以创建Message、也可以new一个Message,然后丢到Handler中去。那他是如何丢到列队中去的呢? 1、如何把Message放进列队的呢? Handler创建的时候 mLooper = Looper.myLooper(); /...

2021-08-21 12:28:14 132

原创 HashMap的核心理解

我不想画图,因为图在心中,啊哈哈! 1、HashMap如何散列的? hashMap是数组和单向链表的组合

2021-08-21 09:54:55 99

空空如也

空空如也

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

TA关注的人

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