客户端基础知识必备 | 青训营笔记

134 阅读4分钟

这是我参与「第四届青训营 」笔记创作活动的第2天

这篇笔记将详细记录Android客户端开发的一些必备基础知识,重点包括Android基础组件与通信组件。

Android基础组件

Activity

Activity是显示型组件,用来显示APP的内容,是实现与用户的交互的容器。一个Activity通常就是一个单独的屏幕,是用户交互的入口,其在Android中无法被替代。

Activity生命周期

  • onCreate:在首次创建 Activity 时调用。系统向此方法传递一个 Bundle 对象,其中包含 Activity 的上一状态,不过前提是捕获了该状态,而后会调用onStart方法。(可以在此方法中执行所有正常的静态设置 ,比如:创建视图、将数据绑定到列表等等。)

  • onStart:在 Activity 即将对用户可见之前调用。而后如果Activity转入了前台就会调用onResume方法。 如果此时直接屏幕熄灭或者用户按下home键则会直接调用onStop方法,当然这种情况比较极端。

  • onResume:在 Activity 即将开始与用户进行交互之前调用。 此时,Activity 处于 Activity 堆栈的顶层,并具有用户输入焦点。当跳转另一个Activity,或者退出当前Activity后会调用onPause方法。

  • onPause:在系统即将开始继续另一个 Activity 时调用。 此方法通常用于确认对持久性数据的未保存更改、停止动画以及其他可能消耗 CPU 的内容,诸如此类。 它应该非常迅速地执行所需操作,因为它返回后,下一个 Activity 才能继续执行,所以不能执行耗时操作。而后正常情况下会调用onStop方法。但是有一种极端情况,就是如果这个时候快速让 当前Activity 返回前台,则会调用onResume方法。

  • onStop:在 Activity 对用户不再可见时调用。如果 Activity 被销毁,或另一个 Activity(一个现有 Activity 或新 Activity)继续执行并将其覆盖,就会调用此方法。而后如果 Activity 恢复与用户的交互,则会调用 onRestart 方法,如果 Activity 被销毁,则会调用onDestroy方法。

  • onRestart:在Activity被停止后再次启动时调用(即屏幕熄灭后再次回到app,按下home键后再次回到app),而后会调用onStart方法。

  • onDestroy:在 Activity 被销毁前调用,这是 Activity 收到的最后调用。 当 Activity 结束(对 Activity 调用了 finish 方法),或系统为节省空间而暂时销毁该 Activity 实例时,可能会调用它。 你可以通过 isFinishing 方法区分这两种情形。

Fragment

Fragment是Android3.0开始引入的组件,主要是为了便于大屏UI的设计和实现。它有自己的生命周期,但是它的生命周期会受到加载Fragment的Activity的生命周期的约束。

Fragment生命周期

  • onAttach()将Fragment和Activity相关联。在使用时我们通常会使用以下代码添加fragment getSupportFragmentManager().beginTransaction() .add(R.id. frame_container , msg_fragment ); 此时将fragment添加到Activity中,则会首先调用onAttach()方法。

  • onCreate()创建Fragment对象

  • onCreateView()在创建Fragment视图时调用

  • onActivityCreated() 在Activity的onCreate()方法结束后调用。此时Activity已经完成创建。但此时Activity并不一定是在onCreate()生命周期,可能在onResume()周期中,原因是因为Fragment的添加在Activity的onResume()时进行,也可能是在Activity的onCreate()时进行。

  • onStart()与Activity的onStart()相绑定,此时Fragment对于用户已经可见,但是无法交互。

  • onResume()与Activity的onResume()相绑定,在onResume()方法之后就可以与用户交互了。

  • onPause()与 Activity的onPause()想绑定,且意义与Activity相同

  • onStop()与Activity的onStop()相绑定,意义也与Activity相同。

  • onDestoryView()在Fragment即将结束结束或者保存,此时会回调此方法,用于将onCreateView的视图和fragment分离,而要重新显示的话,需要重新创建视图,介于Activity的onStop和onDestory()之间调用。

Android通信组件

Handler

Handler是一套 Android 消息传递机制,主要用于线程间通信。handler其实就是主线程在起了一个子线程,子线程运行并生成Message,Looper获取message并传递给Handler,Handler逐个获取子线程中的Message. Binder/Socket用于进程间通信,而Handler消息机制用于同进程的线程间通信。

Binder

Binder是跨进程通信方式、它实现了IBinder接口,是连接 ServiceManager的桥梁blabla。Binder是Android中的一种跨进程通信方式,该通信方式在linux中没有,是Android所独有的,其作用是在Android中实现跨进程通信。


今天对于Android的四个重要组件进行了一个简要的概括,后续我也将持续更新这篇博文,将activity、fragment、handler以及binder四大组件进行一个更为细致的分享。