1、activity生命周期
什么是Activity?android是用户交互的入口他提供的界面让用户进行滑动点击等等交互,
这就是Activity。
Activity的4中状态:
running:用户可以点击屏幕等等操作,然后屏幕会做出响应,他是一个Activity处于栈顶的状态。
paused:表明Activity失去焦点,或者被一个非全屏的ACtivity占据,或者是一个透明的Activity占据栈顶的情况,
也就是说
Activity失去了跟用户交互的能力但bing并没有被销毁(当然处于内存紧张的时候这个Activity是有可能被销毁的)
stopped: 当这个Activity被另一个Activity完全覆盖的时候所处于的状态,这个时候他是完全不可见的,
跟paused一样该Activity的成员变量、内存状态的信息都有可能还在(内存不紧张的情况下)
kill:表明Activity已经被系统回收掉了,这时所保存的内存信息和成员变量都不存在了的。
Activity的生命周期:
先看看这种非常熟悉的图↓↓↓
Activity启动的时候他会这样走 Activity启动->onCreate()->onStart()->onResume()
onCreate:是在Activity被创建第一时间调用的方法,创建的时候就必须重写这个方法,他可以
布置一些布局的资源,
数据加载,图片的预加载
onStart:表明Activity正在启动Activity已经处于用户可见的状态,也并没有处于前台状态也就是
说还不能跟这个Activity
进行交互,可以理解为看见了但是摸不着的这么一种状态
onResume:表明Activity此时已经在前台了,就能跟用户进行一系列的交互动作
当点击Home键回到主界面的时候Activity会这样走 onPause()->onStop()
onPause:整个Activity处于不可见停止状态,停止状态就是说,看得见摸不着
onStop:表明整个Activity不可见,处在后台运行(当这个方法调用完后,如果是内存紧张的话
Activity有可能被回收)
当我们再次回到原ACtivity的时候Activity会这样走 onRestart()->onStart()->onResume()
onRestart:表示Activity正在重新启动,这个Activity是处于由比可见状态变为可见状态就会调用这个方法
退出当前Activity时 onPause()->onStop()->onDestory()
onDestory:表明Activity正在被销毁,这里我们可以做回收工作以及一些资源的释放
android进程优先级(前台/可见/服务/后台/空)
优先级有上往下递减(前台优先级最高->空进程优先级最低)
前台进程:处于前台和用户之间交互的Activity或者在前台绑定的Service
可见进程:处于可见但是不在前台,就是用户不能交互
服务进程:在后台开启的一个service服务
后台进程:当我们的按下Home键前台进程变成后台进程,这时后台进程不会被Kill(根据内存进程)
空进程:不属于以上的进程都属于空进程,为了缓存的目的保留,android也可以随时Kill他
2、android任务栈
Android任务栈就是栈,后进先出!用栈来存储Activity,在创建或退出Activity都会在任务栈中添加
或者删除activity,
这个Task就是Activity的集合,android通过任务栈有序的管理Activity。
任务栈并不是唯一的,一个app中可能并不止有一个任务栈,一个Activty也可以独享一个任务栈。
3、activity启动模式
standard(默认):每次启动Activity都会重新创建一个Activity的实例然后加入到任务栈中,不会
考虑任务栈中是否
应存在有Activity的实例,不会fuyong复用Activity。
singletop:栈顶复用模式,当Activity处于栈顶的时候,如果重新创建Activity就会复用该Activity,
否则还是会从新
创建实例。
singletask:栈内复用模式(单例模式),检查任务栈中是否存在该Activity,如果有的话就会
将该Activity置于
栈顶同时把该Activity以上的Activity都从任务栈中移除销毁,这时回回
调一个onNewIntent()方法。
singleInstance:拥有该属性的Activity有且只有一个实例,而且该Activity独享该任务栈。
4、scheme跳转协议
scheme是一个页面内的跳转协议,是一种非常好的实现机制,通过定义自己的scheme协议,可以非常方便的跳转APP
中的各个页面;通过scheme协议,服务器可以定制化告诉APP跳转哪个页面,可以通过通知栏消息定制化跳转页面,
可以通过H5页面跳转页面等。