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时仍有一些注意事项。

实现navigation

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

LiveData概述

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

小花,再见

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

生成绑定类

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

绑定适配器使用

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