android基本知識點(diǎn)總結(jié)_第1頁
android基本知識點(diǎn)總結(jié)_第2頁
android基本知識點(diǎn)總結(jié)_第3頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、,an droid 四大組件Activity、Service BroadcastReceiver、ContentProviderActivity生命周期1、新建一個Activity,并把各個生命周期打印出來2、運(yùn)行Activity,得到如下信息10-23 02:35:54.261: INFO/che nys(4385): on Create-10-23 02:35:54.271: INFO/che ny s(4385): on Start-10-23 02:35:54.286: INFO/che ny s(4385): on Resume-3、按crtl+f12切換成橫屏?xí)r 10-23 02:

2、36:58.331: INFO/che nys(4385): on Savel nsta nceState-10-23 02:36:58.411: INFO/chenys(4385): onPause->10-23 02:36:58.462: INFO/che nys(4385): on Stop->10-23 02:36:58.481: INFO/che nys(4385): on Destroy->10-23 02:36:58.572: INFO/chenys(4385): onCreate-> 10-23 02:36:58.622: INFO/chenys(438

3、5): onStart->10-23 02:36:58.632: INFO/chenys(4385): onRestoreInstanceState->10-23 02:36:58.642: INFO/chenys(4385): onResume->4、再按 crtl+f12 切換成豎屏?xí)r,發(fā)現(xiàn)打印了兩次相同的log10-23 02:38:14.172: INFO/chenys(4385): onSaveInstanceState->10-23 02:38:14.172: INFO/chenys(4385): onPause->10-23 02:38:14.172

4、: INFO/chenys(4385): onStop->10-23 02:38:14.172: INFO/chenys(4385): onDestroy->10-23 02:38:14.281: INFO/chenys(4385): onCreate->10-23 02:38:14.301: INFO/chenys(4385): onStart->10-23 02:38:14.312: INFO/chenys(4385): onRestoreInstanceState->10-23 02:38:14.331: INFO/chenys(4385): onResum

5、e->10-23 02:38:14.812: INFO/chenys(4385): onSaveInstanceState->10-23 02:38:14.852: INFO/chenys(4385): onPause->10-23 02:38:14.861: INFO/chenys(4385): onStop->10-23 02:38:14.892: INFO/chenys(4385): onDestroy->10-23 02:38:14.921: INFO/chenys(4385): onCreate->10-23 02:38:15.021: INFO/

6、chenys(4385): onStart->10-23 02:38:15.031: INFO/chenys(4385): onRestoreInstanceState->10-23 02:38:15.111: INFO/chenys(4385): onResume->5、修改 AndroidManifest.xml ,把該 Activity 添加 android:configChanges="orientation" ,執(zhí)行步 驟310-23 02:42:32.201: INFO/chenys(4875): onSaveInstanceState->

7、;10-23 02:42:32.232: INFO/chenys(4875): onPause->10-23 02:42:32.301: INFO/chenys(4875): onStop->10-23 02:42:32.311: INFO/chenys(4875): onDestroy-> 10-23 02:42:32.402: INFO/chenys(4875): onCreate->10-23 02:42:32.471: INFO/chenys(4875): onStart->10-23 02:42:32.471: INFO/chenys(4875): on

8、RestoreInstanceState->10-23 02:42:32.481: INFO/chenys(4875): onResume->6、再執(zhí)行步驟 4,發(fā)現(xiàn)不會再打印相同信息,但多打印了一行onConfigChanged10-23 02:44:41.151: INFO/chenys(4875): onSaveInstanceState->10-23 02:44:41.151: INFO/chenys(4875): onPause->10-23 02:44:41.151: INFO/chenys(4875): onStop->10-23 02:44:41.

9、151: INFO/chenys(4875): onDestroy->10-23 02:44:41.371: INFO/chenys(4875): onCreate->10-23 02:44:41.421: INFO/chenys(4875): onStart->10-23 02:44:41.521: INFO/chenys(4875): onRestoreInstanceState->10-23 02:44:41.541: INFO/chenys(4875): onResume->10-23 02:44:42.002: INFO/chenys(4875): on

10、ConfigurationChanged->17、把步驟 5的 android:configChanges="orientation" 改成android:configChanges="orientation|keyboardHidden" ,執(zhí)行步驟 3,就只打印 onConfigChanged10-23 02:46:43.762: INFO/chenys(5193): onConfigurationChanged->28、執(zhí)行步驟 410-23 02:47:27.652: INFO/chenys(5193): onConfiguratio

11、nChanged->210-23 02:47:27.902: INFO/chenys(5193): onConfigurationChanged->1總結(jié):1不設(shè)置Activity的android:configChanges時,切屏?xí)匦抡{(diào)用各個生命周期,切橫屏?xí)r會執(zhí)行一次,切豎屏?xí)r會執(zhí)行兩次2、設(shè)置 Activity 的 android:configChanges="orientation" 時,切屏還是會重新調(diào)用各個生命周期,切橫、豎屏?xí)r只會執(zhí)行一次3、設(shè)置 Activity 的 android:configChanges="orientation

12、|keyboardHidden"時,切屏不會重新調(diào)用各個生命周期,只會執(zhí)行on Co nfiguratio nCha nged方法四service以及service的生命周期兩種用處:后臺運(yùn)行和跨進(jìn)程訪問兩種模式:startService()/bi ndService()模式場合:調(diào)用者與服務(wù)之間沒有關(guān)連,即使調(diào)用者退出了,服務(wù)仍然運(yùn)行即用startService(,調(diào)用者與服務(wù)綁定在了一起,調(diào)用者一旦退出,服務(wù)也就終止則用bindService()生命周期:service的生命周期沒有像 activity里的on stop,主要經(jīng)歷創(chuàng)建、開始、銷毀三個階段,由于有兩種模式的存在,其

13、生命周期有兩種體現(xiàn)方式如果打算采用Con text.startService(方法啟動服務(wù),在服務(wù)未被創(chuàng)建時,系統(tǒng)會先調(diào)用服務(wù)的on Create()方 法,接著調(diào)用 on Start()方法。如果調(diào)用startService(方法前服務(wù)已經(jīng)被創(chuàng)建,多次調(diào)用startservice(方法并不會導(dǎo)致多次創(chuàng)建服務(wù),但會導(dǎo)致多次調(diào)用on Start()方法。采用startService(方法啟動的服務(wù),只能調(diào)用Context.stopService(方法結(jié)束服務(wù),服務(wù)結(jié)束時會調(diào)用onDestroy()方法。onBind()只有采用Con text.b in dService()方法啟動服務(wù)時才會回調(diào)

14、該方法。該方法在調(diào)用者與服務(wù)綁定時被調(diào)用,當(dāng)調(diào)用者與服務(wù)已經(jīng)綁定,多次調(diào)用Con text.bi ndService()方法并不會導(dǎo)致該方法被多次調(diào)用。采用Context.bindService()方法啟動服務(wù)時只能調(diào)用onUnbind()方法解除調(diào)用者與服務(wù)解除,服務(wù)結(jié)束時會調(diào)用on Destroy()方法。五. An droid里的兩種動畫以及區(qū)別兩種動畫:補(bǔ)間動畫Teen Animation && 逐幀動畫 Frame Animation區(qū)別:Teen :是定義一個開始和結(jié)束,中間的部分由程序運(yùn)算得到Frame :其實和gif圖片差不多,有幀的概念,是一個動畫數(shù)組六. A

15、idl的全稱以及在 an droid中的作用全稱:an droid in terface defi niti on Ian guage作用:跨進(jìn)程訪問數(shù)據(jù)實現(xiàn)方式:其一般與 service連用,在service里new 一個其stub的實例,并實現(xiàn)其 aidl 里面的方法即可七. An droid進(jìn)程與進(jìn)程,線程與線程之間,應(yīng)用程序與應(yīng)用程序之間如何通信進(jìn)程與進(jìn)程:利用 aidl線程與線程:一般體現(xiàn)在ui主線程和子線程之間的通信,用handle機(jī)制即可應(yīng)用程序與應(yīng)用程序: Broastcast八. An droid里解析xml的幾種方式及區(qū)別三種方式:dom ( Document Object

16、 Model), sax (Simple API for XML ), pull優(yōu)缺點(diǎn):Dom優(yōu)點(diǎn):使用DOM操作XML的代碼看起來是比較直觀,并且在某些方面比基于SAX的實現(xiàn)更加簡單Dom缺點(diǎn):DOM需要將XML文件的所有內(nèi)容以文檔樹方式存放在內(nèi)存中, 所以內(nèi)存的消耗比較大Sax優(yōu)點(diǎn):解析速度快,ContentHandler對象可以是多個,內(nèi)存消耗少Sax缺點(diǎn):必須實現(xiàn)事件處理程序,不能修改文檔,不能隨機(jī)訪問pull和sax的原理一樣,不一樣的地方是 pull讀取xml文件后調(diào)用方法返回的是 數(shù)字九. An droid里的數(shù)據(jù)存儲方式1, SharePreferences2, 利用io流文件

17、存取3, 網(wǎng)絡(luò)存取(httpclient 和 httpServer)4, sqlite5, 屬性系統(tǒng)6, 使用ContentProvider存儲數(shù)據(jù),其實這快個人認(rèn)為不應(yīng)該納入存儲方式,他只 是定義了一種數(shù)據(jù)共享的標(biāo)準(zhǔn)接口。十.在我們實際的開發(fā)過程中需要注意的細(xì)節(jié)1. 在進(jìn)行界面布局的時候,一定要考慮到橫豎屏的切換,盡量做到后期不用適配很多的機(jī)器。2. 對于Activity的生命周期的控制,一定要嚴(yán)謹(jǐn),考慮周全,什么時候查詢,什么時候移除監(jiān)聽器,activity的三種生命周期的切換,保存界面信息,恢復(fù)界面信息,都要在代碼編寫之前盡量考慮周全,切不可跟著bug走3. 經(jīng)常整理代碼,類中用不到的屬

18、性,方法,一定要刪除,不要想著以后可能用到,99%的情況是以后絕對用不到,這樣做可以避免以后代碼整理的混亂4. 工作臺的編碼和工程的編碼統(tǒng)一使用utf-8,同時將家里的電腦上的工作臺與之同步,避免亂碼。5. 要做好工作記錄,公司小,沒有開發(fā)文檔,這個沒辦法,自己盡量把自己的工作記錄寫好,例如某項功能的大體實現(xiàn)思路啊,遇到的難點(diǎn)啊,解決的辦法啊等等,以后看的時候也不至于太費(fèi)勁。6. 方法名,屬性名的定義切不可偷一時之懶,隨便胡弄一個,多花點(diǎn)時間起個好名字,以后能省很多的事。7. xml進(jìn)行頁面布局的時候,盡量能夠做到元素的重用,同時xml的名稱很重要,凡是 activity的布局文件,后面都要加

19、個.activity的后綴,列表的ItemView的布局,都要加個tem的后綴,一定要做到統(tǒng)一,否則后期會很亂8. res目錄中用不到的drawable styles等等資源文件及時刪除,后期刪除會很麻煩,誰知道這個drawable有沒有用到。9. 線程,線程,這個必須重視重視再重視,能不開就不開,能少開就少開,能用Handler代替的就用Handler。開啟一個線程的時候一定要考慮到什么時候,如何關(guān)閉這個線程。十. BroadcastReceiver的 使用兩種方式:xml、程序里動態(tài)注冊女口果是 xml 方式,則在 androidmaineifest.xml 的注冊一個 receiver,

20、并在 intent-filter 標(biāo)簽 里加上一個 acti on,這個receiver對應(yīng)的class得繼承 BroadcastReceive,并重寫其 on Receive 方法即可,如果是程序動態(tài)注冊, 得new個BroadcastReceiver實例 b和new 一個IntentFilter 實例i,并在oncreat方法里通過registerReceiver(b, i這個方法動態(tài)注冊即可。十二.An droid里常見的設(shè)計模式及例子1單例模式:在framwork層的SysteServer.jav類里有很多例子,比如PowerManagerService power = new Pow

21、erManagerService(); ServiceManager.addService(Context.POWER_SERVICE, power);將其加入到ServiceManager中。以后,如果其它地方要用到這個實例,只能通過ServiceManager.getService(POWER_SERVICE)從理論上說,PowerManagerService的構(gòu)造函數(shù) 并不是private的,而且也沒有一個 static的PowerManagerService變量存在,但如果我們在使 用這個service的時候如果去new個該service的實例的話,語法上講行得通,但這就違背 了 An droid平臺Framework中service的創(chuàng)建思想。所以用一種模式不是用其定義而是用其舉 一反三。2. Mvc模式:xml的布局文件對應(yīng)了 mvc中的view部分,負(fù)責(zé)顯示界面; an droid中的.java 文件,即activity文件對應(yīng)于 mvc中的 model,負(fù)責(zé)邏輯處理;而an droid中的 AndroidManifest.xml文件則對應(yīng)于 mvc中的controller,負(fù)責(zé)協(xié)調(diào) view于model之間的工作。3. 抽象工廠模式,對象的創(chuàng)建型模式。這種設(shè)計

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論