




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、Activity:Activity是Android程序與用戶交互的窗口,是Android構(gòu)造塊中最基本的一種,它需要為保持各界面的狀態(tài),做很多持久化的事情,妥善管理生命周期以及一些跳轉(zhuǎn)邏輯。 service:后臺服務于Activity,封裝有一個完整的功能邏輯實現(xiàn),接受上層指令,完成相關(guān)的事務,定義好需要接受的Intent提供同步和異步的接口。 Content Provider:是Android提供的第三方應用數(shù)據(jù)的訪問方案,可以派生Content Provider類,對外提供數(shù)據(jù),可以像數(shù)據(jù)庫一樣進行選擇排序,屏蔽內(nèi)部數(shù)據(jù)的存儲細節(jié),向外提供統(tǒng)一的接口模型,大大簡化上層應用,對數(shù)據(jù)的整合提
2、供了更方便的途徑。 BroadCast Receiver:接受一種或者多種Intent作觸發(fā)事件,接受相關(guān)消息,做一些簡單處理,轉(zhuǎn)換成一條Notification,統(tǒng)一了Android的事件廣播模型。Intent(意圖)主要是解決Android應用的各項組件之間的通訊。Intent負責對應用中一次操作的動作、動作涉及數(shù)據(jù)、附加數(shù)據(jù)進行描述,Android則根據(jù)此Intent的描述,負責找到對應的組件,將 Intent傳遞給調(diào)用的組件,并完成組件的調(diào)用。因此,Intent在這里起著一個媒體中介的作用,專門提供組件互相調(diào)用的相關(guān)信息,實現(xiàn)調(diào)用者與被調(diào)用者之間的解耦。顯式意圖:調(diào)用Intent.se
3、tComponent()或Intent.setClass()方法明確指定了組件名的Intent為顯式意圖,顯式意圖明確指定了Intent應該傳遞給哪個組件。隱式意圖:沒有明確指定組件名的Intent為隱式意圖。 Android系統(tǒng)會根據(jù)隱式意圖中設(shè)置的動作(action)、類別(category)、數(shù)據(jù)(URI和數(shù)據(jù)類型)找到最合適的組件來處理這個意圖。顯示意圖非常常用也非常簡單一般用于應用程序內(nèi)之間Activity的相互調(diào)用轉(zhuǎn)換,就不多說了,這里我介紹一下隱式意圖:簡單概括就是: 意圖包括:Action(動作),Category(附加信息),Data(數(shù)據(jù),具體內(nèi)容),Tpye(類型)等等,
4、舉個例子,說白了意圖就是啟動一個 組件的的完整的動作信息,就像打人,打就是Action動作,人就是Data內(nèi)容,而Type就是類型,打什么人呢?打壞人,type就是壞指的類型,只 有這些信息全了才能執(zhí)行一個完整的意圖,當然還有一些信息,比如scheme就是URI類型的數(shù)據(jù)的前綴,就像這個例子當中的sms:,還有host主機 名,path路徑等。Activty的生命周期的也就是它所在進程的生命周期。 一個Activity的啟動順序:onCreate()>onStart()>onResume()當另一個Activity啟動時:第一個Activity onPause()>
5、第二個Activity onCreate()>onStart()>onResume() >第一個Activity onStop()當返回到第一個Activity時:第二個Activity onPause() > 第一個ActivityonRestart()>onStart()>onResume() >第二個Activity onStop()>onDestroy()一個Activity的銷毀順序:(情況一)onPause()&
6、gt;<Process Killed> (情況二)onPause()>onStop()><Process Killed> (情況三)onPause()>onStop()>onDestroy()每一個活動( Activity )都處于某一個狀態(tài),對于開發(fā)者來說,是無法控制其應用程序處于某一個狀態(tài)的,這些均由系統(tǒng)來完成。但是當一個活動的狀態(tài)發(fā)生改變的時候,開發(fā)者可以通過調(diào)用 onXX() 的方法獲取到相關(guān)的通知信息。在實現(xiàn) Activity 類的時候,通過覆蓋( override )這些方法即可在你需要處理的時候來調(diào)用。
7、; 一、 onCreate :當活動第一次啟動的時候,觸發(fā)該方法,可以在此時完成活動的初始化工作。 onCreate 方法有一個參數(shù),該參數(shù)可以為空( null ),也可以是之前調(diào)用 onSaveInstanceState ()方法保存的狀態(tài)信息。 二、 onStart :該方法的觸發(fā)表示所屬活動將被展現(xiàn)給用戶 這一步變成用戶可見不可交互 的。 &
8、#160; 三、 onResume :當一個活動和用戶發(fā)生交互的時候,觸發(fā)該方法。 四、 onPause :當一個正在前臺運行的活動因為其他的活動需要前臺運行而轉(zhuǎn)入后臺運行的時候,觸發(fā)該方法。這時候需要將活動的狀態(tài)持久化,比如正在編輯的數(shù)據(jù)庫記錄等。你的程序的優(yōu)先級降低,有可能被系統(tǒng)收回 五、 onStop : 當一個活動不再需要展示給用戶的時候,觸發(fā)該方
9、法。如果內(nèi)存緊張,系統(tǒng)會直接結(jié)束這個活動,而不會觸發(fā) onStop 方法。 所以保存狀態(tài)信息是應該在onPause時做,而不是onStop時做。活動如果沒有在前臺運行,都將被停止或者Linux管理進程為了給新的活動預留足 夠的存儲空間而隨時結(jié)束這些活動。因此對于開發(fā)者來說,在設(shè)計應用程序的時候,必須時刻牢記這一原則。在一些情況下,onPause方法或許是活動觸發(fā)的 最后的方法,因此開發(fā)者需要在這個時候保存需要保存的信息。 六、onRestart :當處于停止狀態(tài)的活動需要再次展現(xiàn)給用戶的時候,觸發(fā)該方法。
10、60; 七、 onDestroy :當活動銷毀的時候,觸發(fā)該方法。和 onStop 方法一樣,如果內(nèi)存緊張,系統(tǒng)會直接結(jié)束這個活動而不會觸發(fā)該方法。· onSaveInstanceState :系統(tǒng)調(diào)用該方法,允許活動保存之前的狀態(tài),比如說在一串字符串中的光標所處的位置等。 通常情況下,開發(fā)者不需要重寫覆蓋該方法,在默認的實現(xiàn)中,已經(jīng)提供了自動保存活動所涉及到的用戶界面組件的所有狀態(tài)信息。Activity狀態(tài)一般認為Activit
11、y有以下四種狀態(tài):活動的:當一個Activity在棧頂,它是可視的、有焦點、可接受用戶輸入的。Android試圖盡最大可能保持它活動狀態(tài),殺死其它Activity來確保當前活動Activity有足夠的資源可使用。當另外一個Activity被激活,這個將會被暫停。暫停:在很多情況下,你的Activity可視但是它沒有焦點,換句話說它被暫停了。有可能原因是一個透明或者非全屏的Activity被激活。當被暫停,一個Activity仍會當成活動狀態(tài),只不過是不可以接受用戶輸入。在極特殊的情況下,Android將會殺死一個暫停的Activity來為活動的Activity提供充足的資源。當一個Activi
12、ty變?yōu)橥耆[藏,它將會變成停止。停止:當一個Activity不是可視的,它“停止”了。這個Activity將仍然在內(nèi)存中保存它所有的狀態(tài)和會員信息。盡管如此,當其它地方需要 內(nèi)存時,它將是最有可能被釋放資源的。當一個Activity停止后,一個很重要的步驟是要保存數(shù)據(jù)和當前UI狀態(tài)。一旦一個Activity退出或關(guān)閉 了,它將變?yōu)榇脿顟B(tài)。待用: 在一個Activity被殺死后和被裝在前,它是待用狀態(tài)的。待用Acitivity被移除Activity棧,并且需要在顯示和可用之前重新啟動它。activity的四種加載模式在android的多activity開發(fā)中,activity之間的跳轉(zhuǎn)可能需
13、要有多種方式,有時是普通的生成一個新實例,有時希望跳轉(zhuǎn)到原來某個 activity實例,而不是生成大量的重復的activity。加載模式便是決定以哪種方式啟動一個跳轉(zhuǎn)到原來某個Activity實例。在android里,有4種activity的啟動模式,分別為:·standard: 標準模式,一調(diào)用startActivity()方法就會產(chǎn)生一個新的實例。- 來了intent,每次都創(chuàng)建新的實例。·singleTop: 如果已經(jīng)有一個實例位于Activity棧的頂部時,就不產(chǎn)生新的實例,而只是調(diào)用Activity中的newInstance()方法。如果不位于棧頂,會產(chǎn)生一個新的
14、實例。- 來了intent, 每次都創(chuàng)建新的實例,僅一個例外:當棧頂?shù)腶ctivity 恰恰就是該activity的實例(即需要創(chuàng)建的實例)時,不再創(chuàng)建新實例。這解決了棧頂復用問題,想一想,你按兩次back鍵,退出的都是同一個activity,這感覺肯定不爽。·singleTask: - 來了intent后,檢查棧中是否存在該activity的實例,如果存在就把intent發(fā)送給它,否則就創(chuàng)建一個新的該activity的實例,放入 一個新的task棧的棧底??隙ㄎ挥谝粋€task的棧底,而且棧中只能有它一個該activity實例,但允許其他activity加入該棧。解決了在一 個tas
15、k中共享一個activity。·singleInstance: 這個跟singleTask基本上是一樣,只有一個區(qū)別:在這個模式下的Activity實例所處的task中,只能有這個activity實例,不能有其他的實例。- 肯定位于一個task的棧底, 并且是該棧唯一的activity。解決了多個task共享一個activity。activity啟動方式:兩種當調(diào)用startActivityForResult時通過onActivityResult(int requestCode, int resultCode, Intent data)處理返回的數(shù)據(jù)requestCode:調(diào)用sta
16、rtActivityForResult(Intent intent, int requestCode)時傳遞過去的請求碼。resultCode:被調(diào)用的Activity執(zhí)行setResult(int resultCode, Intent intent)時傳遞的結(jié)果碼,一般有RESULT_CANCELED,RESULT_OK等,用于區(qū)分被調(diào)用的Activity傳回的不同結(jié)果data:被調(diào)用的Activity傳回來的數(shù)據(jù),可以用data.getExtras()得到數(shù)據(jù),用Bundle類型的變量來接收,調(diào)用get(String key)來獲取對應的值back鍵默認行為是finish處于前臺的Acti
17、vity的,即Activity的狀態(tài)為Destroy狀態(tài)為止,再次啟動該Activity是從onCreate開始的(不會調(diào)用onSaveInstanceState()方法)。Home鍵默認是stop前臺的Activity即狀態(tài)為onStop為止,而不是Destroy,若再次啟動它,會調(diào)用onSaveInstanceState() 方法,保持上次Activity的狀態(tài)則是從OnRestart開始的->onStart()->onResume()。IntentFilter中的<action android:name=”ent.action.MAIN”/>和<category android:name=”ent.category.LAUNCH
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 湖北商貿(mào)學院《天然藥物化學研究前沿》2023-2024學年第二學期期末試卷
- 玉溪農(nóng)業(yè)職業(yè)技術(shù)學院《巖土工程測試技術(shù)》2023-2024學年第二學期期末試卷
- 徐州工程學院《攝影與影像基礎(chǔ)》2023-2024學年第二學期期末試卷
- 長治幼兒師范高等??茖W?!吨悄軙r代下的創(chuàng)新創(chuàng)業(yè)實踐》2023-2024學年第二學期期末試卷
- 廣州幼兒師范高等??茖W校《設(shè)計素描》2023-2024學年第二學期期末試卷
- 廣東江門幼兒師范高等??茖W?!犊萍颊撐膶懽髋c學術(shù)規(guī)范》2023-2024學年第二學期期末試卷
- 浙江工商大學《跨國企業(yè)經(jīng)營與管理》2023-2024學年第二學期期末試卷
- 第15課《白楊禮贊》教學設(shè)計 2024-2025學年統(tǒng)編版語文八年級上冊
- 隆化租房合同范本
- 全國江西科學技術(shù)版小學信息技術(shù)六年級下冊第一單元第1課《控制的概念》教學設(shè)計
- DBJ50∕T-098-2019 城市綠化養(yǎng)護質(zhì)量標準
- 自動化腹膜透析(APD)的臨床應用課件
- (日文文書模板范例)請求書-請求書
- 旅游消費者行為學整套課件完整版電子教案課件匯總(最新)
- 學前兒童發(fā)展心理學(第3版-張永紅)教學課件1754
- 2022牛排消費趨勢報告
- TPM╲t4Step Manul(三星TPM絕密資料)
- 細菌群體感應系統(tǒng)及其應用課件
- 司法鑒定程序通則(試行)
- 通達信指標——江恩輪
- 神經(jīng)電生理檢查ppt課件
評論
0/150
提交評論