




已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
Android/java開發(fā)都需要掌握的操作系統(tǒng)基本概念:功能: 操作系統(tǒng)主要是管理計算機的軟件和硬件資源,合理組織計算機的工作流程,方便每個用戶的程序集合概念:操作系統(tǒng)(英語;Operating System,簡稱OS)是一管理電腦硬件與軟件資源的程序,同時也是計算機系統(tǒng)的內(nèi)核與基石。操作系統(tǒng)身負諸如管理與配置內(nèi)存、決定系統(tǒng)資源供需的優(yōu)先次序、控制輸入與輸出設備、操作網(wǎng)絡與管理文件系統(tǒng)等基本事務。操作系統(tǒng)是管理計算機系統(tǒng)的全部硬件資源包括軟件資源及數(shù)據(jù)資源;控制程序運行;改善人機界面;為其它應用軟件提供支持等,使計算機系統(tǒng)所有資源最大限度地發(fā)揮作用,為用戶提供方便的、有效的、友善的服務界面。操作系統(tǒng)是一個龐大的管理控制程序,大致包括5個方面的管理功能:進程與處理機管理、作業(yè)管理、存儲管理、設備管理、文件管理。進程與線程的區(qū)別?進程是表示資源分配的基本單位,又是調(diào)度運行的基本單位。例如,用戶運行自己的程序,系統(tǒng)就創(chuàng)建一個進程,并為它分配資源,包括各種表格、內(nèi)存空間、磁盤空間、IO設備等。然后,把該進程放人進程的就緒隊列。進程調(diào)度程序選中它,為它分配CPU以及其它有關資源,該進程才真正運行。所以,進程是系統(tǒng)中的并發(fā)執(zhí)行的單位。進程和線程的主要差別在于它們是不同的操作系統(tǒng)資源管理方式。進程有獨立的地址空間,一個進程崩潰后,在保護模式下不會對其它進程產(chǎn)生影響,而線程只是一個進程中的不同執(zhí)行路徑。線程有自己的堆棧和局部變量,但線程之間沒有單獨的地址空間,一個線程死掉就等于整個進程死掉,所以多進程的程序要比多線程的程序健壯,但在進程切換時,耗費資源較大,效率要差一些。但對于一些要求同時進行并且又要共享某些變量的并發(fā)操作,只能用線程,不能用進程。什么是進程(Process):普通的解釋就是,進程是程序的一次執(zhí)行,而什么是線程(Thread),線程可以理解為進程中的執(zhí)行的一段程序片段。在一個多任務環(huán)境中下面的概念可以幫助我們理解兩者間的差別: 進程間是獨立的,這表現(xiàn)在內(nèi)存空間,上下文環(huán)境;線程運行在進程空間內(nèi)。 一般來講(不使用特殊技術)進程是無法突破進程邊界存取其他進程內(nèi)的存儲空間;而線程由于處于進程空間內(nèi),所以同一進程所產(chǎn)生的線程共享同一內(nèi)存空間。 同一進程中的兩段代碼不能夠同時執(zhí)行,除非引入線程。 線程是屬于進程的,當進程退出時該進程所產(chǎn)生的線程都會被強制退出并清除。 線程占用的資源要少于進程所占用的資源。 進程和線程都可以有優(yōu)先級。 在線程系統(tǒng)中進程也是一個線程??梢詫⑦M程理解為一個程序的第一個線程。什么情況下使用線程?什么是線程?線程是程序中的一個執(zhí)行流,每個線程都有自己的專有寄存器(棧指針、程序計數(shù)器等),但代碼區(qū)是共享的,即不同的線程可以執(zhí)行同樣的函數(shù)。什么是多線程?多線程是指程序中包含多個執(zhí)行流,即在一個程序中可以同時運行多個不同的線程來執(zhí)行不同的任務,也就是說允許單個程序創(chuàng)建多個并行執(zhí)行的線程來完成各自的任務。多線程的不利方面:線程也是程序,所以線程需要占用內(nèi)存,線程越多占用內(nèi)存也越多; 多線程需要協(xié)調(diào)和管理,所以需要CPU時間跟蹤線程; 線程之間對共享資源的訪問會相互影響,必須解決競用共享資源的問題;線程太多會導致控制太復雜,最終可能造成很多Bug;(使用多線程的好處)CPU是以時間片的方式為進程分配CUP處理時間的,當一個進程以同步的方式去完成幾件事情時,此進程必須完成了第一件事情以后再做第二件事,如此按順序地向CPU請求完成要做的事情。在此單線程的工作模式下,如果把CUP看作是一共有100個時間片的話,CPU可能一直都只是花了其中的10個時間片來處理當前進程所要做的事情,只是用到了CPU的10%的時間片,而其他時間都白白浪費了,當然,實際上CPU的工作模式還是做完一件事以后再去做另一件事,只是CUP的處理速度非??欤芸炀吞幚硗瓿伤埱蟮那槭?。為了提高CPU的使用率,采用多線程的方式去同時完成幾件事情而互不干擾,如當前進程要完成三件事情1、2、3,那么CPU會分別用10%的時間來同時處理這3件事情,從而讓CPU的使用率達到了30%,大大地提高了CPU的利用率。多線程的好處在處理一些特殊的場合其優(yōu)勢尤其明顯。比如下載文件,你要一邊下載一邊顯示進度一邊保存,在這種情況下,如果沒有用多線程的話,沒有意外的話一般都會把主線程阻塞,比如進度條的進度根本沒有隨著已下載的量而變化,堪至是整個窗體都動不了,用多線程就可以很好地解決這個問題。這里有一個生活實例可能更好地去理解多線程:回去看你女朋友做飯,正常的話她都會把洗好的菜(肉)先放到鍋里煮,然后一邊洗別的菜或處理別的事情,如:洗碗、收拾桌臺準備開飯,人還是一個人,但她同時做幾件事情,這樣就可以大大地提高效率。總的一句話就是:CPU還是要花同樣多的時間去完成所有的事情,但多線程可以讓CPU摻插地同時做多件事情,在視覺上讓用戶覺得計算機在同時幫他處理多件事情,更好地改善用戶體驗。線程同步和互斥程序的同步與互斥其實并不難理解,同步其實就是一種排隊,不通的線程排隊等待對某個數(shù)據(jù)結構進行操作,線程共享同一個數(shù)據(jù)結構。互斥是指共享的數(shù)據(jù)結構在某一時刻只能有一個線程對其進行操作Android開發(fā)需要掌握的面向?qū)ο蟮母拍?,繼承,多態(tài)等基本概念Activity 的生命周期,Service 的用法 ,ContentProvider 用法ActivityServiceService是android 系統(tǒng)中的一種組件,它跟Activity的級別差不多,但是他不能自己運行,只能后臺運行,并且可以和其他組件進行交互。Service的啟動有兩種方式:context.startService()和context.bindService()。使用context.startService() 啟動Service是會會經(jīng)歷:context.startService() -onCreate()- onStart()-Service runningcontext.stopService() | -onDestroy() -Service stop 如果Service還沒有運行,則android先調(diào)用onCreate()然后調(diào)用onStart();如果Service已經(jīng)運行,則只調(diào)用onStart(),所以一個Service的onStart方法可能會重復調(diào)用多次。 stopService的時候直接onDestroy,如果是調(diào)用者自己直接退出而沒有調(diào)用stopService的話,Service會一直在后臺運行。該Service的調(diào)用者再啟動起來后可以通過stopService關閉Service。所以調(diào)用startService的生命周期為:onCreate - onStart(可多次調(diào)用) - onDestroy使用使用context.bindService()啟動Service會經(jīng)歷:context.bindService()-onCreate()-onBind()-Service runningonUnbind() -onDestroy() -Service stoponBind將返回給客戶端一個IBind接口實例,IBind允許客戶端回調(diào)服務的方法,比如得到Service運行的狀態(tài)或其他操作。這個時候把調(diào)用者(Context,例如Activity)會和Service綁定在一起,Context退出了,Srevice就會調(diào)用onUnbind-onDestroy相應退出。 所以調(diào)用bindService的生命周期為:onCreate - onBind(只一次,不可多次綁定) - onUnbind - onDestory。在Service每一次的開啟關閉過程中,只有onStart可被多次調(diào)用(通過多次startService調(diào)用),其他onCreate,onBind,onUnbind,onDestory在一個生命周期中只能被調(diào)用一次。service可以在和多場合的應用中使用,比如播放多媒體的時候用戶啟動了其他Activity這個時候程序要在后臺繼續(xù)播放,比如檢測SD卡上文件的變化,再或者在后臺記錄你地理信息位置的改變等等,總之服務嘛,總是藏在后頭的。ContentProvider當應用繼承ContentProvider類,并重寫該類用于提供數(shù)據(jù)和存儲數(shù)據(jù)的方法,就可以向其他應用共享其數(shù)據(jù)。以前我們學習過文件的操作模式,通過指定文件的操作模式為Context.MODE_WORLD_READABLE或Context.MODE_WORLD_WRITEABLE同樣可以對外共享數(shù)據(jù),但數(shù)據(jù)的訪問方式會因數(shù)據(jù)存儲的方式而不同,如:采用xml文件對外共享數(shù)據(jù),需要進行xml解析來讀寫數(shù)據(jù);采用sharedpreferences共享數(shù)據(jù),需要使用sharedpreferences API讀寫數(shù)據(jù)。而使用ContentProvider共享數(shù)據(jù)的好處是統(tǒng)一了數(shù)據(jù)訪問方式。當應用需要通過ContentProvider對外共享數(shù)據(jù)時,第一步需要繼承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進行配置,為了能讓其他應用找到該ContentProvider, ContentProvider采用了authorities(主機名/域名)對它進行唯一標識,你可以把ContentProvider看作是一個網(wǎng)站(想想,網(wǎng)站也是提供數(shù)據(jù)者),authorities就是他的域名:注意:一旦應用繼承了ContentProvider類,后面我們就會把這個應用稱為ContentProvider(內(nèi)容提供者)。熟悉常用的遠程通訊機制,如:Socket/Http等什么是socket所謂socket通常也稱作套接字,應用程序通常通過套接字向網(wǎng)絡發(fā)出請求或者應答網(wǎng)絡請求。以J2SDK-1.3為例,Socket和ServerSocket類庫位于java .net包中。ServerSocket用于服務器 端,Socket是建立網(wǎng)絡連接時使用的。在連接成功時,應用程序 兩端都會產(chǎn)生一個Socket實例,操作這個實例,完成所需的會話。對于一個網(wǎng)絡連接來說,套接字 是平等的,并沒有差別,不因為在服務器端或在客戶端 而產(chǎn)生不同級別。不管是Socket還是ServerSocket它們的工作都是通過SocketImpl類及其子類完成的。 重要的Socket API重要的Socket API:java .net.Socket繼承于java.lang.Object,有八個構造器,其方法并不多,下面介紹使用最頻繁的三個方法,其它方法大家可以見JDK-1.3文檔。 Accept方法用于產(chǎn)生阻塞,直到接受到一個連接,并且返回一個客戶端 的Socket對象 實例。阻塞是一個術語,它使程序 運行暫時停留在這個地方,直到一個會話產(chǎn)生,然后程序繼續(xù);通常阻塞是由循環(huán)產(chǎn)生的。 getInputStream方法獲得網(wǎng)絡連接輸入,同時返回一個InputStream對象 實例。 getOutputStream方法連接的另一端將得到輸入,同時返回一個OutputStream對象 實例。注意:其中getInputStream和getOutputStream方法均可能會產(chǎn)生一個IOException,它必須被捕獲,因為它們返回的流對象 ,通常都會被另一個流對象使用。 SOCKET連接過程根據(jù)連接啟動的方式以及本地套接字 要連接的目標,套接字 之間的連接過程可以分為三個步驟:服務器 監(jiān)聽,客戶端 請求,連接確認。 服務器 監(jiān)聽:是服務器 端套接字 并不定位具體的客戶端 套接字 ,而是處于等待連接的狀態(tài),實時監(jiān)控網(wǎng)絡狀態(tài)。 客戶端 請求:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國鹽酸多西環(huán)素口服液行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 2025-2030年中國電纜填充紗行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 2025-2030年中國生育酚行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 2025-2030年中國溴化丁醇胺行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 2025-2030年中國液體酸性除垢劑行業(yè)深度調(diào)研及市場需求與投資研究報告
- 2025-2030年中國海綿新材料行業(yè)市場深度調(diào)研及發(fā)展趨勢與投資價值評估研究報告
- 2025-2030年中國油炸蘋果片行業(yè)深度調(diào)研及市場需求與投資研究報告
- 2025-2030年中國汽車真空助力器行業(yè)深度調(diào)研及市場需求與投資研究報告
- 2025-2030年中國汽油濾清器行業(yè)市場深度調(diào)研及發(fā)展趨勢與投資前景預測研究報告
- 農(nóng)業(yè)科普視頻傳播策略的創(chuàng)新與實施
- 迎賓及頒獎禮儀培訓
- 軍營超市環(huán)境衛(wèi)生管理方案
- 快樂海豚課件教學課件
- 國開《農(nóng)村社會學》形考作業(yè)1-4參考答案
- 電子煙質(zhì)量管理手冊
- 城市數(shù)字底座CIM數(shù)字城市發(fā)展方向與技術
- 財政學學習通題庫及答案
- 2023-2024學年全國初二下歷史人教版期末試卷(含答案解析)
- 耳穴考核試題及答案
- 形勢與政策智慧樹知到答案2024年西北師范大學
- 2024-2030年中國射擊場行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略分析報告
評論
0/150
提交評論