看第一行代码时学习和记录的
第一章:
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