Improve App Performance With Kotlin Coroutines

原文

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

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

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

Dex文件格式分析

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

1
2
3
4
5
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时仍有一些注意事项。