




已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Android/java開發(fā)都需要掌握的操作系統(tǒng)基本概念:功能: 操作系統(tǒng)主要是管理計(jì)算機(jī)的軟件和硬件資源,合理組織計(jì)算機(jī)的工作流程,方便每個(gè)用戶的程序集合概念:操作系統(tǒng)(英語;Operating System,簡稱OS)是一管理電腦硬件與軟件資源的程序,同時(shí)也是計(jì)算機(jī)系統(tǒng)的內(nèi)核與基石。操作系統(tǒng)身負(fù)諸如管理與配置內(nèi)存、決定系統(tǒng)資源供需的優(yōu)先次序、控制輸入與輸出設(shè)備、操作網(wǎng)絡(luò)與管理文件系統(tǒng)等基本事務(wù)。操作系統(tǒng)是管理計(jì)算機(jī)系統(tǒng)的全部硬件資源包括軟件資源及數(shù)據(jù)資源;控制程序運(yùn)行;改善人機(jī)界面;為其它應(yīng)用軟件提供支持等,使計(jì)算機(jī)系統(tǒng)所有資源最大限度地發(fā)揮作用,為用戶提供方便的、有效的、友善的服務(wù)界面。操作系統(tǒng)是一個(gè)龐大的管理控制程序,大致包括5個(gè)方面的管理功能:進(jìn)程與處理機(jī)管理、作業(yè)管理、存儲(chǔ)管理、設(shè)備管理、文件管理。進(jìn)程與線程的區(qū)別?進(jìn)程是表示資源分配的基本單位,又是調(diào)度運(yùn)行的基本單位。例如,用戶運(yùn)行自己的程序,系統(tǒng)就創(chuàng)建一個(gè)進(jìn)程,并為它分配資源,包括各種表格、內(nèi)存空間、磁盤空間、IO設(shè)備等。然后,把該進(jìn)程放人進(jìn)程的就緒隊(duì)列。進(jìn)程調(diào)度程序選中它,為它分配CPU以及其它有關(guān)資源,該進(jìn)程才真正運(yùn)行。所以,進(jìn)程是系統(tǒng)中的并發(fā)執(zhí)行的單位。進(jìn)程和線程的主要差別在于它們是不同的操作系統(tǒng)資源管理方式。進(jìn)程有獨(dú)立的地址空間,一個(gè)進(jìn)程崩潰后,在保護(hù)模式下不會(huì)對其它進(jìn)程產(chǎn)生影響,而線程只是一個(gè)進(jìn)程中的不同執(zhí)行路徑。線程有自己的堆棧和局部變量,但線程之間沒有單獨(dú)的地址空間,一個(gè)線程死掉就等于整個(gè)進(jìn)程死掉,所以多進(jìn)程的程序要比多線程的程序健壯,但在進(jìn)程切換時(shí),耗費(fèi)資源較大,效率要差一些。但對于一些要求同時(shí)進(jìn)行并且又要共享某些變量的并發(fā)操作,只能用線程,不能用進(jìn)程。什么是進(jìn)程(Process):普通的解釋就是,進(jìn)程是程序的一次執(zhí)行,而什么是線程(Thread),線程可以理解為進(jìn)程中的執(zhí)行的一段程序片段。在一個(gè)多任務(wù)環(huán)境中下面的概念可以幫助我們理解兩者間的差別: 進(jìn)程間是獨(dú)立的,這表現(xiàn)在內(nèi)存空間,上下文環(huán)境;線程運(yùn)行在進(jìn)程空間內(nèi)。 一般來講(不使用特殊技術(shù))進(jìn)程是無法突破進(jìn)程邊界存取其他進(jìn)程內(nèi)的存儲(chǔ)空間;而線程由于處于進(jìn)程空間內(nèi),所以同一進(jìn)程所產(chǎn)生的線程共享同一內(nèi)存空間。 同一進(jìn)程中的兩段代碼不能夠同時(shí)執(zhí)行,除非引入線程。 線程是屬于進(jìn)程的,當(dāng)進(jìn)程退出時(shí)該進(jìn)程所產(chǎn)生的線程都會(huì)被強(qiáng)制退出并清除。 線程占用的資源要少于進(jìn)程所占用的資源。 進(jìn)程和線程都可以有優(yōu)先級。 在線程系統(tǒng)中進(jìn)程也是一個(gè)線程??梢詫⑦M(jìn)程理解為一個(gè)程序的第一個(gè)線程。什么情況下使用線程?什么是線程?線程是程序中的一個(gè)執(zhí)行流,每個(gè)線程都有自己的專有寄存器(棧指針、程序計(jì)數(shù)器等),但代碼區(qū)是共享的,即不同的線程可以執(zhí)行同樣的函數(shù)。什么是多線程?多線程是指程序中包含多個(gè)執(zhí)行流,即在一個(gè)程序中可以同時(shí)運(yùn)行多個(gè)不同的線程來執(zhí)行不同的任務(wù),也就是說允許單個(gè)程序創(chuàng)建多個(gè)并行執(zhí)行的線程來完成各自的任務(wù)。多線程的不利方面:線程也是程序,所以線程需要占用內(nèi)存,線程越多占用內(nèi)存也越多; 多線程需要協(xié)調(diào)和管理,所以需要CPU時(shí)間跟蹤線程; 線程之間對共享資源的訪問會(huì)相互影響,必須解決競用共享資源的問題;線程太多會(huì)導(dǎo)致控制太復(fù)雜,最終可能造成很多Bug;(使用多線程的好處)CPU是以時(shí)間片的方式為進(jìn)程分配CUP處理時(shí)間的,當(dāng)一個(gè)進(jìn)程以同步的方式去完成幾件事情時(shí),此進(jìn)程必須完成了第一件事情以后再做第二件事,如此按順序地向CPU請求完成要做的事情。在此單線程的工作模式下,如果把CUP看作是一共有100個(gè)時(shí)間片的話,CPU可能一直都只是花了其中的10個(gè)時(shí)間片來處理當(dāng)前進(jìn)程所要做的事情,只是用到了CPU的10%的時(shí)間片,而其他時(shí)間都白白浪費(fèi)了,當(dāng)然,實(shí)際上CPU的工作模式還是做完一件事以后再去做另一件事,只是CUP的處理速度非???,很快就處理完成所請求的情事。為了提高CPU的使用率,采用多線程的方式去同時(shí)完成幾件事情而互不干擾,如當(dāng)前進(jìn)程要完成三件事情1、2、3,那么CPU會(huì)分別用10%的時(shí)間來同時(shí)處理這3件事情,從而讓CPU的使用率達(dá)到了30%,大大地提高了CPU的利用率。多線程的好處在處理一些特殊的場合其優(yōu)勢尤其明顯。比如下載文件,你要一邊下載一邊顯示進(jìn)度一邊保存,在這種情況下,如果沒有用多線程的話,沒有意外的話一般都會(huì)把主線程阻塞,比如進(jìn)度條的進(jìn)度根本沒有隨著已下載的量而變化,堪至是整個(gè)窗體都動(dòng)不了,用多線程就可以很好地解決這個(gè)問題。這里有一個(gè)生活實(shí)例可能更好地去理解多線程:回去看你女朋友做飯,正常的話她都會(huì)把洗好的菜(肉)先放到鍋里煮,然后一邊洗別的菜或處理別的事情,如:洗碗、收拾桌臺(tái)準(zhǔn)備開飯,人還是一個(gè)人,但她同時(shí)做幾件事情,這樣就可以大大地提高效率??偟囊痪湓捑褪牵篊PU還是要花同樣多的時(shí)間去完成所有的事情,但多線程可以讓CPU摻插地同時(shí)做多件事情,在視覺上讓用戶覺得計(jì)算機(jī)在同時(shí)幫他處理多件事情,更好地改善用戶體驗(yàn)。線程同步和互斥程序的同步與互斥其實(shí)并不難理解,同步其實(shí)就是一種排隊(duì),不通的線程排隊(duì)等待對某個(gè)數(shù)據(jù)結(jié)構(gòu)進(jìn)行操作,線程共享同一個(gè)數(shù)據(jù)結(jié)構(gòu)?;コ馐侵腹蚕淼臄?shù)據(jù)結(jié)構(gòu)在某一時(shí)刻只能有一個(gè)線程對其進(jìn)行操作Android開發(fā)需要掌握的面向?qū)ο蟮母拍?,繼承,多態(tài)等基本概念A(yù)ctivity 的生命周期,Service 的用法 ,ContentProvider 用法ActivityServiceService是android 系統(tǒng)中的一種組件,它跟Activity的級別差不多,但是他不能自己運(yùn)行,只能后臺(tái)運(yùn)行,并且可以和其他組件進(jìn)行交互。Service的啟動(dòng)有兩種方式:context.startService()和context.bindService()。使用context.startService() 啟動(dòng)Service是會(huì)會(huì)經(jīng)歷:context.startService() -onCreate()- onStart()-Service runningcontext.stopService() | -onDestroy() -Service stop 如果Service還沒有運(yùn)行,則android先調(diào)用onCreate()然后調(diào)用onStart();如果Service已經(jīng)運(yùn)行,則只調(diào)用onStart(),所以一個(gè)Service的onStart方法可能會(huì)重復(fù)調(diào)用多次。 stopService的時(shí)候直接onDestroy,如果是調(diào)用者自己直接退出而沒有調(diào)用stopService的話,Service會(huì)一直在后臺(tái)運(yùn)行。該Service的調(diào)用者再啟動(dòng)起來后可以通過stopService關(guān)閉Service。所以調(diào)用startService的生命周期為:onCreate - onStart(可多次調(diào)用) - onDestroy使用使用context.bindService()啟動(dòng)Service會(huì)經(jīng)歷:context.bindService()-onCreate()-onBind()-Service runningonUnbind() -onDestroy() -Service stoponBind將返回給客戶端一個(gè)IBind接口實(shí)例,IBind允許客戶端回調(diào)服務(wù)的方法,比如得到Service運(yùn)行的狀態(tài)或其他操作。這個(gè)時(shí)候把調(diào)用者(Context,例如Activity)會(huì)和Service綁定在一起,Context退出了,Srevice就會(huì)調(diào)用onUnbind-onDestroy相應(yīng)退出。 所以調(diào)用bindService的生命周期為:onCreate - onBind(只一次,不可多次綁定) - onUnbind - onDestory。在Service每一次的開啟關(guān)閉過程中,只有onStart可被多次調(diào)用(通過多次startService調(diào)用),其他onCreate,onBind,onUnbind,onDestory在一個(gè)生命周期中只能被調(diào)用一次。service可以在和多場合的應(yīng)用中使用,比如播放多媒體的時(shí)候用戶啟動(dòng)了其他Activity這個(gè)時(shí)候程序要在后臺(tái)繼續(xù)播放,比如檢測SD卡上文件的變化,再或者在后臺(tái)記錄你地理信息位置的改變等等,總之服務(wù)嘛,總是藏在后頭的。ContentProvider當(dāng)應(yīng)用繼承ContentProvider類,并重寫該類用于提供數(shù)據(jù)和存儲(chǔ)數(shù)據(jù)的方法,就可以向其他應(yīng)用共享其數(shù)據(jù)。以前我們學(xué)習(xí)過文件的操作模式,通過指定文件的操作模式為Context.MODE_WORLD_READABLE或Context.MODE_WORLD_WRITEABLE同樣可以對外共享數(shù)據(jù),但數(shù)據(jù)的訪問方式會(huì)因數(shù)據(jù)存儲(chǔ)的方式而不同,如:采用xml文件對外共享數(shù)據(jù),需要進(jìn)行xml解析來讀寫數(shù)據(jù);采用sharedpreferences共享數(shù)據(jù),需要使用sharedpreferences API讀寫數(shù)據(jù)。而使用ContentProvider共享數(shù)據(jù)的好處是統(tǒng)一了數(shù)據(jù)訪問方式。當(dāng)應(yīng)用需要通過ContentProvider對外共享數(shù)據(jù)時(shí),第一步需要繼承ContentProvider并重寫下面方法:public classPersonContentProvider extends ContentProviderpublic boolean onCreate()public Uri insert(Uri uri, ContentValuesvalues)public int delete(Uri uri, String selection,String selectionArgs)public int update(Uri uri, ContentValuesvalues, String selection, String selectionArgs)public Cursor query(Uri uri, Stringprojection, String selection, String selectionArgs, String sortOrder)public String getType(Uri uri)第二步需要在AndroidManifest.xml使用對該ContentProvider進(jìn)行配置,為了能讓其他應(yīng)用找到該ContentProvider, ContentProvider采用了authorities(主機(jī)名/域名)對它進(jìn)行唯一標(biāo)識,你可以把ContentProvider看作是一個(gè)網(wǎng)站(想想,網(wǎng)站也是提供數(shù)據(jù)者),authorities就是他的域名:注意:一旦應(yīng)用繼承了ContentProvider類,后面我們就會(huì)把這個(gè)應(yīng)用稱為ContentProvider(內(nèi)容提供者)。熟悉常用的遠(yuǎn)程通訊機(jī)制,如:Socket/Http等什么是socket所謂socket通常也稱作套接字,應(yīng)用程序通常通過套接字向網(wǎng)絡(luò)發(fā)出請求或者應(yīng)答網(wǎng)絡(luò)請求。以J2SDK-1.3為例,Socket和ServerSocket類庫位于java .net包中。ServerSocket用于服務(wù)器 端,Socket是建立網(wǎng)絡(luò)連接時(shí)使用的。在連接成功時(shí),應(yīng)用程序 兩端都會(huì)產(chǎn)生一個(gè)Socket實(shí)例,操作這個(gè)實(shí)例,完成所需的會(huì)話。對于一個(gè)網(wǎng)絡(luò)連接來說,套接字 是平等的,并沒有差別,不因?yàn)樵诜?wù)器端或在客戶端 而產(chǎn)生不同級別。不管是Socket還是ServerSocket它們的工作都是通過SocketImpl類及其子類完成的。 重要的Socket API重要的Socket API:java .net.Socket繼承于java.lang.Object,有八個(gè)構(gòu)造器,其方法并不多,下面介紹使用最頻繁的三個(gè)方法,其它方法大家可以見JDK-1.3文檔。 Accept方法用于產(chǎn)生阻塞,直到接受到一個(gè)連接,并且返回一個(gè)客戶端 的Socket對象 實(shí)例。阻塞是一個(gè)術(shù)語,它使程序 運(yùn)行暫時(shí)停留在這個(gè)地方,直到一個(gè)會(huì)話產(chǎn)生,然后程序繼續(xù);通常阻塞是由循環(huán)產(chǎn)生的。 getInputStream方法獲得網(wǎng)絡(luò)連接輸入,同時(shí)返回一個(gè)InputStream對象 實(shí)例。 getOutputStream方法連接的另一端將得到輸入,同時(shí)返回一個(gè)OutputStream對象 實(shí)例。注意:其中g(shù)etInputStream和getOutputStream方法均可能會(huì)產(chǎn)生一個(gè)IOException,它必須被捕獲,因?yàn)樗鼈兎祷氐牧鲗ο?,通常都會(huì)被另一個(gè)流對象使用。 SOCKET連接過程根據(jù)連接啟動(dòng)的方式以及本地套接字 要連接的目標(biāo),套接字 之間的連接過程可以分為三個(gè)步驟:服務(wù)器 監(jiān)聽,客戶端 請求,連接確認(rèn)。 服務(wù)器 監(jiān)聽:是服務(wù)器 端套接字 并不定位具體的客戶端 套接字 ,而是處于等待連接的狀態(tài),實(shí)時(shí)監(jiān)控網(wǎng)絡(luò)狀態(tài)。 客戶端 請求:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 差旅服務(wù)定制化解決方案合作協(xié)議
- 車輛抵押反擔(dān)保借款合同解除后的后續(xù)處理
- 建筑行業(yè)常年法律顧問專業(yè)服務(wù)協(xié)議
- 土地利用規(guī)劃保密及實(shí)施合同
- 倉儲(chǔ)空間轉(zhuǎn)讓與倉儲(chǔ)管理軟件應(yīng)用合同
- 釣魚艇轉(zhuǎn)讓協(xié)議書范本
- 木房合同協(xié)議書范本
- 生物質(zhì)發(fā)電項(xiàng)目安裝與運(yùn)營管理合同
- 旅游企業(yè)特色旅游辦公用品采購及服務(wù)協(xié)議
- 城市綜合體停車場場地租賃及收費(fèi)管理制度合同
- 《水性涂料產(chǎn)品介紹》課件
- 2025年森林防火項(xiàng)目立項(xiàng)申請報(bào)告模板
- 人教版數(shù)學(xué)七年級下冊6.1.3《平方根》聽評課記錄2
- 《危重病人護(hù)理常規(guī)》課件
- 2025年青島市即墨區(qū)衛(wèi)生健康局所屬事業(yè)單位和公立醫(yī)院招考聘用358人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025版國際貿(mào)易大宗商品交易平臺(tái)合作合同3篇
- 沙漠治理防塵網(wǎng)安裝協(xié)議
- 2023-2024學(xué)年人教版數(shù)學(xué)八年級下冊期末復(fù)習(xí)試卷(含答案)
- 2024年租賃業(yè)務(wù)操作手冊3篇
- 我的植物朋友向日葵400字
- 作家助手簽約標(biāo)準(zhǔn)合同范例
評論
0/150
提交評論