自定义博客皮肤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 1081

原创 Android ThreadLocal之谜

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

2021-09-03 20:41:51 109

转载 (转载)Android性能优化

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

2021-09-02 22:31:57 109

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

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

2021-08-29 21:55:57 114

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

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

2021-08-29 21:52:50 586

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

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

2021-08-27 21:51:32 241

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

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

2021-08-27 21:47:46 1471

转载 RecyclerView小记

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

2021-08-25 22:25:36 92

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

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

2021-08-24 23:22:30 97

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

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

2021-08-23 22:48:08 99

原创 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 364

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

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

2021-08-22 16:16:57 97

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

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

2021-08-22 11:06:00 1867

原创 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 92

原创 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 273

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

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

2021-08-21 13:24:02 71

原创 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 202

原创 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 63

原创 HashMap的核心理解

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

2021-08-21 09:54:55 43

空空如也

空空如也

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

TA关注的人

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