一、Activity详解
一、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原生页面