自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

BillionLeeGogogo

渡劫期的程序员

  • 博客(22)
  • 收藏
  • 关注

原创 Android Studio Debug 包无法运行在真机上

debug 包无法运行到真机上是 Android Studio 3.0 新加的功能,在 gradle.properties 文件添加android.injected.testOnly=false代码就可以禁止这个功能。

2020-03-23 12:39:59 368

原创 kotlin 范围函数(Scope Functions)

文章目录1 概述2 如何区别3 应用场景3.1 let3.2 with3.3 run3.4 apply3.5 also4 总结* 参考1 概述范围函数是一种能作用在某个对象上的 block(代码块,也可以叫闭包或匿名函数),可以在代码块中方便的引用目标对象从而达到简化代码逻辑、减少中间变量的功效。Kotlin 标准库中共有 5 个范围函数 let, run, with, apply, also...

2020-02-29 21:32:23 1077

原创 Marketplace plugins are not loaded

安装 Android Studio Flutter 插件时,提示 ‘Marketplace plugins are not loaded’ ,如下解决方法:添加 Plugins Repositoryhttps://plugins.jetbrains.com/androidstudio

2020-02-15 11:56:35 1179

原创 多读书,读好书

摘抄自:罗升阳:那两年炼就的Android内功修养语言:《深度探索C++对象模型》,对应的英文版是《Inside C+++ Object Model》程序编译、链接、加载:《链接器和加载器》,对应的英文版是《Linker and Loader》《程序员的自我修养:链接、装载和库》操作系统:《Linux内核设计与实现》,对应的英文版是《Linux Kernel Development》...

2020-02-13 14:14:12 191

原创 setContentView() 背后的故事

文章目录概述setContentViewlayoutInflater.inflate参考概述本篇文章将介绍 Activity.onCreate(bundle) 方法中 setContentView(R.layout.some_layout) 方法的执行逻辑。主要包括 DecoView 的生成以及如何从 R.layout.some_layout 导出 View。刚开始接触 Android 时,...

2020-02-11 15:54:11 423

原创 Java 类加载时机及初始化顺序

文章目录类加载时机(5 种)类初始化顺序类加载时机(5 种)虚拟机中以下 5 种情况会触发类的首次加载遇到 new、getstatic、setstatic、invokestatic 字节码时使用 java.lang.reflect 包的方法对类进行反射调用时当加载一个类的时候,发现它的父类还未被加载,则先加载父类虚拟机启动时,需要指定一个主类(带 main() 方法的类),虚拟机会先...

2020-02-08 12:21:16 163

原创 Android App 加载过程介绍:从 startActivity() 到 Activity.onCreate()

设备启动后会启动 init 进程(init main),此进程会根据 init.rc 文件进行启动后的相关调用(文件位置),主要是生成许多硬件相关的守护进程,比如 android debug 守护进程,USB 守护进程等,还会启动大名鼎鼎的 ‘zygote’ 进程,它会初始化一个非常原始的 Dalvik VM,并且会提前加载一些 framework 或已安装应用的通用类,之后会进入就绪状态,等待通...

2020-02-06 18:53:02 891

原创 Activity launchMode、回退栈与 affinity

文章目录概述Task 与回退栈activity 相关属性launchModelaffinity参考概述最近在看 aosp 源码,Activity 启动流程中涉及到大量 Activity 处理细节,如果不从模型上掌握 Task, affinity 等概念,很容易看迷失在代码里。本文意在从模型上梳理 Activity 启动模式以及对应的设置代表的含意,为继续阅读源码打基础。Task 与回退栈一...

2020-02-04 17:49:41 337

原创 从示例了解 Binder 机制

Binder 是 Android 实现跨进程通信(IPC)的一种手段,Android 中每个应用都运行个独自的进程中,每个应用想要正常工作都需要系统服务提供支持,它们之间的信息传递就是基于 Binder 实现。只是因为 Android 对 Binder 层层封装起来普通开发任务接触不到 Binder 层面的接口,所以 Binder 才显示有点神秘。本篇文章将从 Service 组件做为起点,用实例...

2020-01-30 18:35:54 215

原创 Handler 简介

文章目录概要源码分析Looper.prepare() 作用及实现loop 如何实现等待功能概要Handler 主要有两个作用定时执行消息或 Runnable 任务向其它线程发送消息或 Runnable 任务Handler 是 Android 消息分发处理机制中的一个组件。与 Looper、MessageQueue、Message 共同完成消息发送与处理。它们之间关系如下:每个线程对应...

2020-01-28 21:47:46 709

原创 aosp - 源码阅读环境搭建

文章目录1 背景2 获取源码3 建立源码索引# 遇到的问题1 背景Android 开发平时都是看的都是 SDK 中的源码,SDK 中有很多代码都被隐藏了,看不了。mac 上没有 source insight 工具,折腾半天 vscode 插件,也没能设置通代码跳转功能。后来,看到有在线版 aosp 预览网站,第一个是 androidxref,体验还不错,就是加载慢,后来出了个国内版本 andr...

2020-01-27 08:40:26 5378

原创 NFS 共享服务

安装:sudo apt install nfs-kernel-serversudo apt-get install nfs-common服务端 ip: 1.1.1.1客户端 ip: 2.2.2.2服务端配置:找个位置创建一个文件夹,如sudo mkdir /home/lgd/nfsDir(lgd为用户名)按需更改nfsDir用户/组权限,比如 sudo chmod a+wr ...

2020-01-26 10:16:17 368

翻译 Gradle 插件入门

译文地址文章目录构建什么需要什么环境创建项目创建插件将插件配置到宿主工程声明插件 id摘要下一步本文将全程介绍如何创建可重用的构建逻辑,即 Gradle 插件。该插件源码位于工程的 buildSrc 目录,此目录可单独导出一个工程,用于发布或应用到其它 Gradle 构建脚本中。插件提供了普适的约定(convention),任务类型(task type)和其它构建逻辑,使开发者可以专注于自己...

2020-01-22 22:22:15 509

翻译 AAPT2

原文地址AAPT2 全称 Android Asset Packaging Tool 属于构建工具,Android Studio 与 Gradle 插件使用它编译并打包 app 的资源文件。AAPT2 将资源文件解析、索引并编译成二进制格式,并将该二进制包进行 Android 平台的优化处理。Android Gradle 插件 3.0.0 及以上版本默认支持 AAPT2,开发者无需直接调用它。但...

2020-01-22 22:21:10 1697

原创 网络七层、四层模型概念

OSI 七层协议是国际化标准组织制定的用于计算机系统间互联的标准体系,是一个抽象的模型,包括一系列抽象的术语和概念,也包括具体的协议。TCP/IP 四层模型是实际中使用的模型。802.11 是无线局域网协议,802.16 是宽带无线协议。信息在整个互联网中传输过程大致如下图所示:信息在每层传输时都会添加一个信息头来进行跨层传输,相关层之间会通过加头或解开操作获取用于本层的数据。像这样...

2020-01-22 22:20:22 801

原创 发布三方 aar 包到 jCenter

文章目录1 私有项目发布到 jCenter public 仓库1.1 背景1.2 思路1.3 具体步骤2 将三方 aar 发布到 jCenter public 仓库2.1 背景2.2 思路2.3 具体步骤本文介绍如何将自己的 aar 包上传到 jCenter 并发布至 public 仓库。1 私有项目发布到 jCenter public 仓库1.1 背景源码在 Github 上以私有库的形...

2020-01-22 22:19:41 244

原创 okio 原理分析(一)

文章目录1 okio 概念1.1 okio1.2 ByteStrings 和 Buffers1.3 Sources 和 Sinks2 底层实现2.1 简洁明了 API 背后的逻辑2.2 复用缓存2.3 超时处理3 待整理部分1 okio 概念以下三小节翻译自 okio 文档。1.1 okiookio 是对传统 io 和 nio 的扩展库,使数据访问、数据存储及相应处理更加简单。1.2 B...

2020-01-22 22:17:30 684

原创 红黑树(rb-tree)基操

文章目录二叉查找树插入删除左旋与右旋红黑树从零开始构建一棵红黑树红黑树删除处理红黑树只有以下 5 条性质(很简单,很好记,最好按顺序记忆)树中结点只有两种颜色,红色和黑色树的根是黑色结点每个叶结点(nil[T] 也叫哨兵结点)都是黑色结点红色结点的子红点必须为黑色结点对任意结点,从它到它子孙叶结点的所有路径上包含相同数目的黑色结点红黑树特点:查找效率高,即使在最坏情况下也有很好的...

2020-01-22 22:16:02 175

原创 AQS 在 ReentrantLock 等锁中的作用及原理

AQS 在 ReentrantLock 等锁中的作用及原理文章目录简介ReentrantLocklock 和 unlockawait 和 signaltryAcquire 与多条件等待Semaphoreacquire 和 release其它方法ReentrantReadWriteLock简介AQS 全称 AbstractQueuedSynchronizer,抽象队列同步器,是实现锁和同步器的...

2020-01-22 22:13:31 174

原创 Java 注解

文章目录1 简介2 分类2.1 元注解@Target@Retention@Inherited@Repeatable (Java 8)2.2 普通注解3 注解处理器3.1 运行机制3.2 编写处理器3.3 注册处理器4 常用工具5 注意事项6 进阶学习1 简介许多 API 都有很多固定套路的代码,比如 Android 里绑定 View 的操作 findViewById(R.id.xxx),添加点...

2020-01-22 22:12:16 408

原创 java 方法分派调用

以下程序输出值是什么?public class Main { static class Base { String name = "base"; Base() { sayHello(); } void sayHello() { System.out.println(name...

2020-01-22 22:10:36 208

翻译 MRAID3.0

原文地址文章目录移动端富媒体广告接口标准(MRAID)移动端富媒体广告接口标准(MRAID)3.0 版本关于 IAB 技术实验室概要周知介绍1.1 定义1.2 范围1.3 MRAID 是如何工作的1.4 版本1.4.1 MRAID 3.0 版本中的更新2 概述2.1 Web 技术支持2.1.1 广告服务器(Ad Server)2.1.2 渲染广告(Ad Rendering)2.2 广告控制(Ad...

2020-01-22 22:06:34 2307

空空如也

空空如也

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

TA关注的人

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