Android activity 相关知识点 2019-03-19

该文章大体上是翻译总结自安卓开发文档。想看原汁原味的请戳这里:Activity_doc

1、首先,activity是一个非常关键的类,因为它承载两个非常重要的功能:

(1)负责展示信息给用户,是用户最直观能看到的;

(2)负责与用户进行交互,如监听各种按键事件等等;


2、由于手机app和桌面式的应用有很大区别。桌面式的应用的ertrypoint相对比较固定,一般都是通过点击桌面上的图标来实现的。而手机app的entrypoint很不固定,有很多中方式可以去打开一个app中的某个activity,比如点击图标、通过其他app跳转打开对应的activity,如分享图片,分享链接、接收到对应的广播等等。所以谷歌对acitivity做了一下的设计:

(1)activity的设计跟普通的编程语言是不一样的。普通的编程语言的entry point都是main()函数,所以整个app的初始化都必须先调用到这个main()函数。而activity的设计是通过生命周期 +  callback回调函数来实现的,这样就摆脱了app在应用层只有一个entry point的问题。

(2)activity之间是相互独立,耦合度很低,很松散的联系成一个整体的。举个例子:一个app中有A\B\C 3个activity,如果A activity中的按钮会启动B activity,B activity的按钮会去启动C activity。那么对于A来说,完全不管C activity是否存在的,就算C activity不存在,对A activity完全没有影响。只是对于我们的业务需求来说,缺少C activity,会使得需求不完整。更极端的来说,如果A\B\C 3个activity之间没有通过按钮等方式进行联系,那么这3个activity是完全独立的。之所以说activity之间松散的联系成一个整体,只是从应用的角度出发,为了业务需求,使之成为一个功能齐全的app而已。


3、如果一个app有activity,那么至少有一个被设置成mainActivity。所谓mainActivity,就是我们第一次启动这个app的时候展现出来的activity:可以通过首次点击桌面上这个app的图标或者通过命令去首次启动这个app等等。那么如何将一个activity配置成mainActivity,就要在这个app的AndroidManifest.xml中进行配置。具体的配置如下图:


配置一个activity为mainActivity


4、每一个activity都有一个window,所有的layout,view等跟UI有关的都是绘制在这个window上面然后展示给用户的。这也是如果为什么在A activity上通过getWindowManager.addView()添加的各种view,在启动B activity之后都会被挡住的原因。

你可能感兴趣的:(Android activity 相关知识点 2019-03-19)