Kotlin 核心编程(五):面向对象

0x0001 Kotlin 中的类

Kotlin 中类与 Java 中的几点不同:

  • 在 Kotlin 中除非显示声明延时初始化,那么属性需要显式的指定默认值。
  • val 为不可变属性
  • 修饰符的访问权限不同,Kotlin 默认全局可见, Java 默认包可见。
  • 在接口中,不可为属性初始化值( Kotlin 接口中抽象属性,背后通过方法实现)

0x0002 Koltlin 中的接口

在 Kotlin 中,接口可以拥有属性和默认方法:

Read More

Rxjava 源码学习(四)-自定义操作符:lift、compose

0x0001 lift 和 compose 的区别

看一下在源码中的是如何对两者进行描述的:

This compose operates on the ObservableSource itself whereas lift operates on the ObservableSource’s Observers.
If the operator you are creating is designed to act on the individual items emitted by a source ObservableSource, use lift. If your operator is designed to transform the source ObservableSource as a whole(for instance, by applying a particular set of existing RxJava operators to it) use {@code compose}

Read More

Linux 下的几个函数的基本了解

在对 Android 系统源码的学习过程中,总是会不可避免的查看 Linux 层的实现,那么此时总会碰到关键性的函数操作,而理解这些函数对要分析的功能模块是不可缺少的。本文为 Android 系统中常见的 Linux 函数,主要描述其作用,帮助理解。

mmap

一种内存映射文件的方法

Read More

使用 CPU Profiler 检查 CPU Activity 和函数跟踪

0x0001 使用 Call Chart 标签检查跟踪

Call Chart 标签提供 函数跟踪 的图形表示形式。

  • 水平方向 表示 函数执行的时间段时间长短;
  • 沿垂直轴 显示被该函数调用的函数;

图形不同颜色表示不同函数级别:

  • 橙色 – 对系统 API 的调用
  • 绿色 – 对应自有函数的调用
  • 蓝色 – 对第三方 API(包括 Java 的 API) 的调用

Read More

JobScheduler 和 WorkManager 的基本使用

0x0001 JobScheduler 的使用

对于满足网络、电量、时间等一定预定条件而触发的任务,那么 JobScheduler 便是绝佳选择。 JobScheduler 主要用于在 未来某个时间 下满足 一定条件时,触发执行某项任务的情况,那么可以创建一个 JobService 的子类,重写其 onStartJob() 方法来实现这个功能。

JobScheduler 的使用步骤:

Read More

Kotlin 核心编程(三):Kotlin 中的高阶函数和 Lambad 表达式

0x0001 什么是高阶函数?

Kotlin 天然支持函数特性,与 Java 类为一等公民不同,在 Kotlin 中 函数为一等公民,函数可以直接定义在 kt 文件中。

在 Java 中限制方法只能接收数据作为参数,而高阶函数除此外,方法的参数可以是函数并且函数的返回值也可以为函数

0x0002 一个实例说明为什么使用高阶函数

下面通过一个示例,依据需求的演进来一步一步揭开为什么要引入高阶函数。

Read More