什么是响应式编程

最近被人问起什么是响应式编程,虽然使用RxJava已经五六年了,但真正让我用一句话来概括什么是响应式编程还真有点困难。打开google,搜索什么是函数编程,看了几遍文章也没有明确的答案,这里谈谈自己的理解。

响应式编程一个核心的概念是流(stream)。可以基于任何东西创建数据流。流非常轻便,并且无处不在,任何东西都可以是一个流:变量,用户输入,属性,缓存,数据结构等等。除此之外,我们有很多功能强大的函数,可以对这些流进行合并、过滤、转变等。

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相互通信。