- 博客(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 1118
原创 Android ThreadLocal之谜
先贴个源码:ThreadLocal.java其实这个类相当的简单,如果你了解HashMap的原理的话,这个类轻松拿下。备战中...
2021-09-03 20:41:51 141
转载 (转载)Java volatile关键字最全总结:原理剖析与实例讲解(简单易懂)
目录一、简介二、并发编程的3个基本概念三、锁的互斥和可见性四、Java的内存模型JMM以及共享变量的可见性五、volatile变量的特性六、volatile不适用的场景七、volatile原理八、单例模式的双重锁为什么要加volatile一、简介volatile是Java提供的一种轻量级的同步机制。Java 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量,相比于synchronized(synchronized通常称为重量级锁),volatile
2021-08-29 21:55:57 127
原创 Android并发之Executor(线程池)家族(二)之AtomicInteger
线程并发,那就牵扯到内存共享的问题,在并发编程中,有三个理念:原子性、可见性、有序性。这里分享一个转载。
2021-08-29 21:52:50 611
转载 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 258
原创 Android并发之Executor(线程池)家族(一)
线程池在移动端开发过程中,在提高性能、充分利用GPU方面,有着不错的表现。Executor是个比较庞大的家族,Executor的子孙众多。常用的ThreadPoolExecutor、FixedThreadPool、CachedThreadPool、ScheduledThreadPool、SingleThreadExecutor等。 Executor是只有一个void execute(Runnable command)为实现的方法的接口类,是实现Android并发编程线程池框...
2021-08-27 21:47:46 1540
转载 RecyclerView小记
RecyclerView使用和封装过很多次了。但从来没有去认真研究过源码,一是没时间,二是后面的工作原因,不怎么接触到。 今天来简单整理下。RecyclerView可以说是ListView替代品了,就是因为他能做到的,ListView做不到,ListView有的,他都有。简单记ListView和RecyclerView的区别,还是很大的。第一,直接父类的不同,RecyclerView直接继承ViewGroup。1、ListView ex...
2021-08-25 22:25:36 109
原创 ArrayList小记之新手必须知道的
这个非线程安全的集合,大家都用来临时的存储数据,都用烂了。没有人不会的,甚至连面试都不会问到了。ArrayList之扩容ArrayList,是维护了一个数组的一个集合类。既然是数组,那就遇到扩容的问题。那他是怎么扩容的呢?Arrays.copyOf(...)........ private void grow(int minCapacity) { // overflow-conscious code int oldCapacity = elementDat
2021-08-24 23:22:30 124
原创 ListView的某个角落-面试官都不知道的东西
ListView,在RecycleView出来之前,使用率100%,有么有?面试中也是经常问的一个问题。大家都知道,ListView只显示屏幕上的Item + 1。不少人也知道RecycleBin的存在,也知道他是缓冲超出屏幕外的item。那,今天先看下RecycleBin到底里面有啥,这个也是AbsListView调度ItemView的逻辑。1、mActiveViews // 没有争议,是活动的View,至于哪里赋值的,你去ListView中layoutChildren方法去找答案。2、
2021-08-23 22:48:08 107
原创 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 410
原创 Android中,序列化,持久化笔记
Android中,用于序列化的就是Parcelable和Serializeable。Serializeable是Java的,Parcelable是Android特有的。1、Serializeable比较简单的序列化方式,对象直接implement它即可,如果其中的字段不需要序列化,前面加上transient关键,表示短暂持有,不需要持久化。2、Parcelable这个相比Serializeable要复杂点,需要自己写一些东西,集体自己看,但要注意的是,序列化和返序列化的时候,要意义对应。如.
2021-08-22 16:16:57 127
原创 Android总是闪退,怎么办?Android崩溃机制。
闪退,程序退出这些都是开发中最常见的了。开发过程中,那还好说,遇到就解决被,主要还是应对上线问题。各大平台的捕获机制不少,用就完事了。但,我还是想知道Android崩溃机制。所谓的闪退就是Android系统执行app的时候,发生不可以进行下去的步骤,追溯到最底层,就是堆栈内存的那点事咯。这里推荐个简书的文章:https://www.jianshu.com/p/37b3c9f950dd当然还有其他很优秀的文章,大家都搜索下。我这里也不贴出来了。UncaughtExceptionHandler
2021-08-22 11:06:00 1901
原创 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 109
原创 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 281
原创 排序算法之基数排序(桶排序)
排序问题,一直是算法中的比较好玩的东西。今天总结下这个以空间换时间的经典排序算法。1、算法图解以这个数组为例{53, 3, 542, 748, 14, 214} 使用基数排序, 进行升序排序第1轮排序: (1) 将每个元素的个位数取出,然后看这个数应该放在哪个对应的桶(一个一维数组) (2) 按照这个桶的顺序(一维数组的下标依次取出数据,放入原来数组)最终得到:数组的第1轮排序 arr = {542, 53, 3, 14, 214, 748} ...
2021-08-21 13:24:02 76
原创 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 238
原创 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 73
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人