安卓基础知识

看第一行代码时学习和记录的

第一章:

Android的四层系统架构:

linux内核层(里那克斯):安卓系统是基于linux内核的,这一层为安卓设备的各种硬件提供了底层驱动

系统运行库层:这一层通过一些C/C++库来为android系统提供了重要的特性支持

应用框架层:这一层主要提供了构建应用程序时可能用到的各种API

应用层:这一层包含所有安装在手机上的应用程序

Android系统四大组件

Activity、 Service、 Broadcast Reciver 、Content  Provider

活动是安卓应用程序的门面,凡是在应用中你看的到的东西,都是放在活动中的

Activity是安卓系统提供的一个活动基类,我们项目中所有的活动都必须继承它或者它的子类,才能拥有活动的特性

onCreate()方法,是一个活动被创建时必须要被执行的方法

安卓程序设计讲究程序和视图分离,因此不推荐直接在活动中编写界面,更通用的一种方法时,在布局文件中编写界面,然后在活动中引进来

项目中的资源:res文件夹

drawable开头的放图片

mipmap开头的放应用图标

values开头的放字符串 样式 颜色等配置的

layout开头的放布局文件的

代码中引用是用R.String.Hello

xml中引用 @String.Hello

 

android studio是利用gradle来构建工程的

安卓打印日志的工具类是Log,等级首字母为方法名,从低到高分别是verbose、debug、info、warn(警告)、error(严重问题)

 

第二章 探究活动

活动是一种可以包含用户界面的组件,主要用于和用户交互,是安卓应用程序的门面,凡是你所看到的都是放在活动中的

项目中的任何activity都应该重写Activity类的OnCreate()方法

最好每一个活动对应一个布局

点击back按钮可以销毁一个环境,或者使用finish()方法,两者效果是一样的

点击启动应用的图标只会进入到这个应用的主页活动页面,那么如何跳转到其他活动呢

使用intent,其中有显式intent和隐式intent

intent是安卓程序中各组件相互之间进行交互的一种方式,可以指明当前组件想要执行的动作,还可以在各个组件之间传递数据

intent一般可以用于启动活动,启动服务以及发送广播等场景

intent的有多个构造函数的重载,比如 Intent(Context,class),即需要两个参数,一个是背景,一个是要打开的活动

通过intent可以打开网页,一个活动向下一个活动传递数据,返回数据给上一个活动

活动的生命周期:

安卓中的活动是可以层叠的,每启动一个新的活动,都会覆盖在原来的活动之上,点击back会销毁上面的活动,下面的一个活动重新展示出来

安卓是使用任务(Task)来管理活动的,一个任务就是一组存放在栈里的活动的集合,这个栈也被称为返回栈,栈是一种后进先出的数据结构

启动一个新的活动时,该活动会在返回栈中入栈,位于栈顶,如果该活动被销毁,那么就会展示前一个入栈的活动,系统总是展示处于栈顶的活动给用户

每个活动在其生命周期最多可能有四个状态:

1、running 运行状态:当一个活动位于返回栈的栈顶,此时活动处于运行状态

2、paused 暂停状态:当一个活动不再处于栈顶,但是仍然可见时,此时活动进入暂停状态

3、stoped 停止状态:当一个活动不再处于栈顶,并且完全不可见时,此时活动进入停止状态,当其他地方需要内存时,停止状态的活动会被回收

4、killed 销毁状态:当一个活动从返回栈中移除,就变成了销毁状态,系统最倾向于回收处于这种状态的活动,从而保证手机里的内存充足

(当一个Activity处于暂停状态或停止状态时就随处可能进入死亡状态,因为系统可能因内存不足而强行结束该Activity。
停止状态到死亡状态分为两种情况:(1)由用户操作导致,则执行:onStop() -> onDestroy()。(2)由系统自动强制执行,则该Activity被强行结束。)

Activity的七个回调方法

启动活动(从无要create--start--resume到running状态)

onCreate() 该方法会在活动第一次被创建的时候调用,进行一些初始化操作

onStart()该方法在活动从不可见变成可见的时候调用

onResume()该方法在活动准备好和用户交互的时候调用,此时的活动一定在栈顶且处于运行状态

活动运行中

「另一个活动启动,但是并未完全遮盖」

onPause()在系统准备去启动或者恢复另一个活动的时候调用(paused状态执行resume到running状态paused状态执行stop到stoped状态   )

「另一个活动启动,且完全遮盖」

onStop()在活动完全不可见时调用  (stoped状态要执行restart--start-resume到running状态

「活动被销毁,退出app」

onDestroy()在活动被销毁之前调用,之后活动的状态将变为销毁状态

onRestart()在活动由停止状态变成运行状态之前调用,也就是活动被重新启动了

以上七个方法,除了onRestart()方法,其他都是俩俩相对的

 

点击app图标后主活动启动,再点击进入其他页面,这个过程中回调方法的使用,和活动状态的变化

1-点击app图标--主活动被创建,主活动依次执行onCreate() onStart() onResume()方法,主活动是run运行状态

2-点击一个全遮盖主活动活动入口,主活动依次执行onPause() onStop(),主活动是Stop停止状态

3-此时点击返回按钮回到主活动页面,执行onRestart()方法,之后依次执行onStart() onResume()方法,主活动run状态

4-此时点击一个对话类型的活动入口,主活动执行onPause()方法,主活动paused状态

5-再次点击返回按钮,主活动执行onResume方法,主活动run状态

6-再次点击返回,主活动依次执行onStop() onDestroy()

 

 

简单来说,启动app,主活动依次执行方法 onCreate onStart onResume 到达running状态,其中onCreate是第一次创建活动才会调用

running活动被完全遮盖,主活动依次执行(onPause onStop)到stoped状态,如果从stoped状态到running,需要onRestart onStart onResume

running活动被部分遮盖,主活动执行onPause到paused状态,如果从paused状态到running,需要onResume

活动正在running,关闭app主活动依次执行方法 onPause onStop onDestroy 到destroyed状态,其中onDestroyed要活动被销毁或者被收回时执行

app放在后台时,主活动要从当前状态到达stoped状态,如果是running那么依次执行onPause onStop到stoped状态,如果是paused那么执行onStop到stoped状态,已经stoped状态则不变

app从后台唤醒时,主活动走stoped状态挥发到之前的状态的步骤,如果之前是running那么走onRestart onStart onResume,如果之前是paused那么只走onRestart  onStart

 

posted @ 2021-09-07 14:42  别打雷  阅读(388)  评论(0编辑  收藏  举报