自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 微信小程序引入WEui

1、2、终端输入:npm init -ynpm install weui-miniprogram3、构建 npm(“工具”菜单 --> “构建 npm”)4、首先要在 app.wxss 里面引入 weui.wxss@import 'miniprogram_npm/weui-miniprogram/weui-wxss/dist/style/weui.wxss';5、在页面的 json 文件加入 usingComponents 配置字段{ "usingComponents"

2021-05-25 16:22:34 196 2

原创 view如何在fragment中监听返回键

https://stackoverflow.com/questions/22552958/handling-back-press-when-using-fragments-in-android

2019-09-11 09:20:47 279

原创 AndroidStudio上flutter使用Colors卡顿

AndroidStudio上每次用到Colors的时候都会卡住,以为是as抽风,但后来发现几乎每次都会卡顿,实在忍不了就上网查了一下解决了。解决方案

2019-07-16 16:33:37 261

原创 mac下反编译流程

1.下载所需apktool dex2jar jd-guihttps://download.csdn.net/download/tcbhaiqiang/105249482.将下载的apktool 及apktool.jar复制到/usr/local/bin(shift+command+g可以快速到达指定文件夹)3.在终端中输入指令chmod +x /usr/local/bin/apktool*...

2019-07-04 16:57:53 1476

原创 View绘制流程之draw过程

概述View的draw过程相比于measure和layout过程就简单多了。我们直接来看代码。draw过程public void draw(Canvas canvas) { public void draw(Canvas canvas) { final int privateFlags = mPrivateFlags; final boole...

2019-06-15 17:02:28 144

原创 View绘制流程之layout过程

概述View的layout过程和measure过程一样,需要分为单一view和viewgroup两种,单一view只需要进行layout就可以确定自己的四个顶点,而viewGroup除了layout过程外,还需要进行onLayout遍历所有的子view,并调用子view的layout方法,来确定子view的位置。单一view的layout过程public void layout(int l,...

2019-06-15 16:43:39 199 1

原创 View绘制流程之measure过程

概述View的绘制包括measure,layout,draw三个过程,即测量,布局,绘制。measure是对view的宽高进行测量,layout是确定view的四个顶点,即确定view的位置,draw是将最终的view绘制到屏幕上。measure过程如果只是一个单一的view,只需要对自身进行measure就足够了,但如果是一个viewgroup,除了对自身进行measure外还需要遍历它所...

2019-06-15 15:00:34 177 1

原创 线程池ThreadPoolExecutor使用和原理

概述线程提高了程序的运行效率,但线程的创建需要占用内存空间,大量的线程必然会加重系统的负担从而影响性能。而线程池的出现则避免了线程的重复创建,总结来说线程池有三个优势:1.复用已创建的线程,降低资源消耗。2.控制线程池的最大并发数,防止资源抢夺。3.有效管理线程池内的线程,提高稳定性。ThreadPoolExecutorExecutor是一个任务执行接口,ExecutorService继承了...

2019-06-14 16:17:47 202

原创 AsyncTask原理解析

1.概述AsyncTask是一个轻量级的异步任务类,通常用于后台执行异步任务,并提供任务进度以便主线程更新ui的场景,AsyncTask内部维护了一个handler和两个线程池,handler用于主线程与线程池的切换,两个线程池分别用于任务排队和任务最终执行。2.源码分析(api 28)executeAsyncTask开始执行任务是调用execute方法,所以我们从这个方法开始探究。 @...

2019-06-12 20:03:56 141

原创 HandlerThread原理分析

要想在非ui线程中使用handler,我们首先想到的是那三大步,Looper.prepare(),创建 handler,Looper.loop(),必要时还要quit一下,这种方法虽合情合理,但总让人感觉丑陋且繁琐,这时候HandlerThread就应运而生了。使用方式IntentService为我们完美展示了HandlerThread的使用方式: private final class S...

2019-06-12 13:50:00 277

原创 IntentService使用和原理总结

IntentService之前项目中有一个需求是在打开app时自动导入用户短信中的行程,考虑到导入行程的行为不仅耗时且需要在导入完成后关闭服务,所以采用了IntentService的实现方式。具体使用public class ReadTripSmsService extends IntentService { public ReadTripSmsService() { ...

2019-06-11 19:37:16 351

原创 ThreadLocal理解

相信了解过handler机制或者eventbus源码的同学对ThreadLocal都不会陌生,它的作用是为不同线程提供独立的Looper副本。除此之外,以线程为作用域的并且不同线程需要独立的变量的数据都可以采用ThreadLocal。这样可能不太好理解,我们举个例子,假设我们在线程中需要随时随地获取一个对象,我们首先想到的是将这个对象设置成静态的全局变量,这种方法是可以接受的,但是如果每个线程都需...

2019-06-03 15:51:13 94

原创 安卓消息机制源码分析

前言作为一个android developer,安卓消息机制可谓再熟悉不过了,在平时的开发过程中更是少不了它的存在。我们都知道handler通常用于子线程更新ui,通常情况下,如果主线程有耗时操作,页面有可能会发生卡顿,严重情况下还会出现anr,所以我们会开辟一个新线程来执行耗时操作,执行结束后如果需要进行ui更新就可以利用handler切换到主线程操做ui。本质上说handler机制并不是专门...

2019-06-02 18:12:00 208

空空如也

空空如也

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

TA关注的人

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