什么是activity?
答:Activity是Android一個(gè)非常重要的用戶接口,是可見的,用戶和應(yīng)用程序之間進(jìn)行交互的接口。在每個(gè)Activity中都可以放很多控件,所以也可以把Activity看作控件的容器。
一.activity生命周期
? ?1.activity的4種狀態(tài)
? ? ? ? running放在棧頂
? ? ? ? paused失去焦點(diǎn),成員變量都還在
? ? ? ? stopped當(dāng)activity被覆蓋的時(shí)候
? ? ? ? killed 此時(shí)的activity已經(jīng)被銷毀,所有變量都不存在
? ? 2.生命周期
activity啟動(dòng)
? ? 1.oncreate()是在activity創(chuàng)建的時(shí)候調(diào)用,初始化的時(shí)候調(diào)用
? ? 2.onstart()表明activity正在啟動(dòng)狀態(tài),這時(shí)的activity可以看見但是不能觸摸
? ? 3.onresume()此時(shí)的activity可見,并且可以和用戶交互
點(diǎn)擊home鍵回到主見面
? ? 1.onpause()此時(shí)activity處于停滯狀態(tài),可見但不可觸摸
? ? 2.onstop()當(dāng)activity完全不可見,也是不可交互的
當(dāng)我們再次回到原activity的時(shí)候
? ? 1.onrestart()表示activity正在重新啟用,
? ? 2.onstart()
? ? 3.onresume()
退出當(dāng)前activity
? ? 1.onpause()
? ? 2.onstop()
? ? 3.ondestory()activity完全銷毀,此時(shí)可以做一些關(guān)閉的操作
二.android進(jìn)程優(yōu)先級(jí)
1.前臺(tái):例如和用戶正在交互的activity或者在前臺(tái)activity綁定的service
2.可見 :activity處于可見但是不能點(diǎn)擊的時(shí)候就是可見進(jìn)程
3.服務(wù):在后臺(tái)開啟的服務(wù)進(jìn)程就是服務(wù)進(jìn)程
4.后臺(tái):比如前臺(tái)activity按了home鍵,此時(shí)的activity看不見也不可交互,但是未被系統(tǒng)所回收,及為后臺(tái)進(jìn)程
5.空:除上述四種進(jìn)程外就是空進(jìn)程,可以隨時(shí)被系統(tǒng)所回收
三.android啟動(dòng)模式
1.standard:每次啟動(dòng)都會(huì)重新創(chuàng)建activity實(shí)例,并放在棧中,并走相應(yīng)的生命周期,消耗內(nèi)存資源,
2.singletop:棧頂復(fù)用,當(dāng)創(chuàng)建activity的時(shí)候會(huì)先查看當(dāng)前棧頂是否已經(jīng)存在當(dāng)前activity實(shí)例,如果存在就復(fù)用,如果不存在即重新創(chuàng)建
3.singletask:棧內(nèi)復(fù)用,相當(dāng)于棧內(nèi)的單例模式,當(dāng)創(chuàng)建activity先檢查棧內(nèi)是否存在此activity,如果存在,他會(huì)把當(dāng)前activity上面的其他activity移除,銷毀,走onnewinstant方法
4.singleinstance:獨(dú)享任務(wù)棧模式
四.scheme跳轉(zhuǎn)協(xié)議
android中的scheme是一種頁面內(nèi)跳轉(zhuǎn)協(xié)議,是一種非常好的實(shí)現(xiàn)機(jī)制,通過定義自己的scheme協(xié)議,可以非常方便跳轉(zhuǎn)app中的各個(gè)頁面,通過scheme協(xié)議,服務(wù)器可以定制化告訴app跳轉(zhuǎn)那個(gè)頁面,可以通過通知欄消息定制化跳轉(zhuǎn)頁面,可以通過H5頁面跳轉(zhuǎn)頁面等.
簡單來說,這個(gè)scheme協(xié)議其實(shí)就是給個(gè)uri地址,把參數(shù)以及要打開的activity的名字封裝在里面,在客戶端中解析這個(gè)uri地址,獲取到activity的名字及參數(shù),通過這兩個(gè)順利打開指定的activity.