人生最可悲的事情,莫过于胸怀大志,却又虚度光阴。 ​​​​

Improve App Performance With Kotlin Coroutines

原文

协程是一种并发设计模式,您可以在Android上使用它来简化异步执行的代码。 Coroutines在版本1.3中添加到Kotlin,并基于其他语言的既定概念。

Android上,协同程序有助于解决两个主要问题:

  • 管理长时间运行的任务,否则可能会阻止主线程并导致应用冻结。
  • 提供主安全性,或从主线程安全地调用网络或磁盘操作。

Dex文件格式分析

在刚学习Java的时候我们都会写一个HelloWorld的示例。

public class HelloWorld{
    public static void main(String[] args){
        System.out.println("Hello,world!");
    }
}

然后通过javac命令编译成字节码,然后调用java命令机执行字节码。我们如何像java一样在命令行里直接在命令行输出Hello,world!呢。具体要执行如下操作:

Activity的启动流程

App启动的整体流程分为以下7个阶段。

  1. Launcher通知AMS,要启动App,而且指定要启动App的哪个页面(也就是首页)。
  2. AMS通知Launcher, “好了我知道了,没你什么事了”。同时,把要启动的首页记下来。
  3. Launcher当前页面进入Paused状态,然后通知AMS, “我睡了,你可以去找App了”。
  4. AMS检查App是否已经启动了。是,则唤起App即可。否,就要启动一个新的进程。AMS在新进程中创建一个ActivityThread对象,启动其中的main函数。
  5. App启动后,通知AMS, “我启动好了”。
  6. AMS翻出之前在2中存的值,告诉App,启动哪个页面。
  7. App启动首页,创建Context并与首页Activity关联。然后调用首页Activity的onCreate函数。

至此启动流程完成,可分成两部分:第1~3阶段,Launcher和AMS相互通信;第4~7阶段,App和AMS相互通信。

Paging 库概述

分页库可帮助您一次加载和显示小块数据。按需加载部分数据可减少网络带宽和系统资源的使用。

Dagger2在Android中的使用

与其他大多数依赖注入框架相比,Dagger2的主要优点之一是其严格生成的实现(无反射)意味着它可以在Android应用程序中使用。但是,在Android应用程序中使用Dagger时仍有一些注意事项。

实现navigation

导航体系结构组件简化了应用程序中目标之间导航的实现。目的地是应用中的特定屏幕。默认情况下,导航体系结构组件包括支持fragmentactivity作为目标,但您也可以添加对新类型目标的支持。一组目的地组成一个应用程序的“导航图”。

LiveData概述

LiveData是一个可观察的数据持有者类。与常规可观察性不同,LiveData具有生命周期感知能力,这意味着它遵守其他应用程序组件(例如activityfragmentservice)的生命周期。 这确保LiveData只更新处于活动生命周期状态的应用程序组件观察者。

小花,再见

领养小花的最初目的就是为了给蛋黄找个伴。6月26日下午,我和珊珊顶着大太阳骑着自行车来到小沙河村接小花。小花比预想的要小的多,看着不像是他主人说的一个多月,顶多也就二十多天,而且眼中充满了泪水,当时没有多想,就领回来了。

生成绑定类

数据绑定库生成用于访问布局的变量和视图的绑定类。生成的绑定类将布局变量与布局中的视图链接起来。绑定类的名称和包可以自定义。所有生成的绑定类都继承自ViewDataBinding类。

绑定适配器使用

绑定适配器负责对设置值进行适当的框架调用。一个例子是设置一个属性值,如调用setText()方法。另一个例子是设置一个事件监听器,如调用setOnClickListener()方法。

DataBinding绑定表达式使用

表达式语言允许您编写处理View分发的事件的表达式。数据绑定库自动生成将布局中的View与数据对象绑定所需的类。

Android自定义属性

创建自定义属性需要以下步骤:

  • 创建一个自定义View。
  • 创建values/attrs.xml文件,并定义属性。
  • 在View中获取属性值并使用。

Dagger使用指南

任何应用程序中最好的类是那些做事情的类:BarcodeDecoderKoopaPhysicsEngineAudioStreamer。 这些类具有依赖性; 也许是一个BarcodeCameraFinderDefaultPhysicsEngine和一个HttpStreamer

Class文件结构

Class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在Class文件之中,中间没有添加任何分隔符,这使得整个Class文件中存储的内容几乎全部是程序运行的必要数据,没有空隙存在。当遇到需要占用8位字节以上空间的数据项时,则会按照高位在前的方式分割成若干个8位字节进行存储。这种顺序称为“Big-Endian”。

sqlite常用语法总结