版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_32673327/article/details/84581864
一、Activity的生命周期
1. activity的四种状态
- running activity可以活动 用户可以点击 处于栈顶的位置
- pause 失去焦点 被acitvity窗口覆盖 ,或者是透明activity处于栈顶位置 失去和用户的交互 内存紧张会被回收
- stoped 被完全覆盖 内存紧张会被回收
- killed 被系统回收掉
2. activity的生命周期
- 启动 oncreate -->onStart-->onResume
- onStart--用户可见 但是用户不能进行交互
- onResume--用户可见 可以进行交互
- onpause --->onStop 点击home返回主界面
- onpause--处于停止状态,用户不可见,内存紧张会被回收
- onStop ----完全覆盖,内存紧张会被回收
- 再次回到原activity onreStart->onStart->onResume
- 退出onPause->onStop->onDestroy
3.android中进程优先级
- 前台
- 可见
- 服务 (service)
- 后台 (不可见的状态)
- 空
4.activity状态保存
为什么平时并没有实现onSaveInstanceState()和onRestoreInstanceState()方法,但是有些时候,Activity中的UI状态依然得到了保存,是为什么?
在Android中,Activity类的onSaveInstanceState()方法默认实现会调用布局中每个View的onSaveInstanceState()方法去保存其本身的状态信息,Android框架中几乎每个控件都会实现这个方法。我们只需要为想要保存其状态的每个控件提供一个唯一的ID(在xml中设置 android:id属性),如果控件没有 ID,则系统无法保存其状态。
我们可以通过将View的android:saveEnabled属性设置为false或通过调用View的setSaveEnabled()方法显式阻止布局内的视图保存其状态,通常不需要设置这些属性,但如果想以不同方式恢复Activity UI的状态,可以这样做。
二、android中的任务栈 和activity的启动模式
1.standard
- 标准的跳转方式,可以复用activity,为了避免重新创建消耗内存资源
2.singletop
- 栈顶复用模式,如果创建的activity在栈顶,就不会重新创建,复用栈顶
3.singletask
- 栈内复用模式,单例模式,当前栈中有此activity,就会放在栈顶,并且将它之上的activity进行移除,此时会回调onNewIntent方法
3.singleinstance
- 栈中有且仅有一个实例
三、scheme跳转协议
Android中的Scheme是一种页面内跳转协议,通过自定义Scheme协议,可以跳转到app中的任何页面。
-- Uri.parse("qh://test:8080/goods?goodsId=8897&name=fuck")
- 服务器可以定制化跳转app页面
- app可以通过Scheme跳转到另一个app页面
- 可以通过h5页面跳转app原生页面