Ⅰ 我想知道android開發必須要掌握的有哪些知識點
l 熟練運用Android下的自定義控制項。
l 熟練掌握Android系統架構,對Android的各個層次的開發有一定的認識。
l 熟練掌握android下的XML,JSON,HTML的解析,熟練掌握各種數據的存儲方式,能使用MVC獨立開發客戶端程序,熟悉安卓下的GPS定位。
l 熟悉android 的JNI 開發,通過JNI實現java與C/C++程序間的調用及回調。
l 熟練掌握UI設計、常用布局、動畫特效。熟悉安卓下的消息推送機制原理。
l 熟悉Android下的安全機制。如獲取系統最高許可權使得不能停止服務,利用守護進程保護服務不被停止,清理內存等。
l 熟悉Android下網路通信機,對Socket通信、TCP、Http有較深刻的了解和經驗。
l 熟練應用Mysql,SQLServer,及安卓下的SQLite資料庫操作及編碼。
l 熟練掌握HTML,DIV/CSS,熟悉JavaScript/Ajax/jquery能實現靜態頁面的開發。
l 了解HTML5,了解PhoneGAP框架,WebSevice。
熟練使用Eclipse/Myeclipse,CVS/SVN/GIT等開發工具, 對數據結構有深入了解,有C/C++基礎
當然你java基礎也必須要好 演算法什麼的
Ⅱ 每個Android 都應必須了解的多線程知識點~
進程是系統調度和資源分配的一個獨立單位。
在Android中,一個應用程序就是一個獨立的集成,應用運行在一個獨立的環境中,可以避免其他應用程序/進程的干擾。當我們啟動一個應用程序時,系統就會創建一個進程(該進程是從Zygote中fork出來的,有獨立的ID),接著為這個進程創建一個主線程,然後就可以運行MainActivity了,應用程序的組件默認都是運行在其進程中。開發者可以通過設置應用的組件的運行進程,在清單文件中給組件設置:android:process = "進程名";可以達到讓組件運行在不同進程中的目的。讓組件運行在不同的進程中,既有好處,也有壞處。我們依次的說明下。
好處:每一個應用程序(也就是每一個進程)都會有一個內存預算,所有運行在這個進程中的程序使用的總內存不能超過這個值,讓組件運行不同的進程中,可以讓主進程可以擁有更多的空間資源。當我們的應用程序比較大,需要的內存資源比較多時(也就是用戶會抱怨應用經常出現OutOfMemory時),可以考慮使用多進程。
壞處:每個進程都會有自己的虛擬機實例,因此讓在進程間共享一些數據變得相對困難,需要採用進程間的通信來實現數據的共享。
線程是進程的一個實體,是CPU調度和分派的基本單位,它是比進程更小的能獨立運行的基本單位。
在Android中,線程會有那麼幾種狀態:創建、就緒、運行、阻塞、結束。當應用程序有組件在運行時,UI線程是處於運行狀態的。默認情況下,應用的所有組件的操作都是在UI線程里完成的,包括響應用戶的操作(觸摸,點擊等),組件生命周期方法的調用,UI的更新等。因此如果UI線程處理阻塞狀態時(在線程里做一些耗時的操作,如網路連接等),就會不能響應各種操作,如果阻塞時間達到5秒,就會讓程序處於ANR(application not response)狀態。
1.線程作用
減少程序在並發執行時所付出的時空開銷,提高操作系統的並發性能。
2.線程分類
守護線程、非守護線程(用戶線程)
2.1 守護線程
定義:守護用戶線程的線程,即在程序運行時為其他線程提供一種通用服務
常見:如垃圾回收線程
設置方式:thread.setDaemon(true);//設置該線程為守護線程
2.2 非守護線程(用戶線程)
主線程 & 子線程。
2.2.1 主線程(UI線程)
定義:Android系統在程序啟動時會自動啟動一條主線程
作用:處理四大組件與用戶進行交互的事情(如UI、界面交互相關)
因為用戶隨時會與界面發生交互,因此主線程任何時候都必須保持很高的響應速度,所以主線程不允許進行耗時操作,否則會出現ANR。
2.2.2 子線程(工作線程)
定義:手動創建的線程
作用:耗時的操作(網路請求、I/O操作等)
2.3 守護線程與非守護線程的區別和聯系
區別:虛擬機是否已退出,即
a. 當所有用戶線程結束時,因為沒有守護的必要,所以守護線程也會終止,虛擬機也同樣退出
b. 反過來,只要任何用戶線程還在運行,守護線程就不會終止,虛擬機就不會退出
3.線程優先順序
3.1 表示
線程優先順序分為10個級別,分別用Thread類常量表示。
3.2 設置
通過方法setPriority(int grade)進行優先順序設置,默認線程優先順序是5,即 Thread.NORM_PRIORITY。
4.線程狀態
創建狀態:當用 new 操作符創建一個線程的時候
就緒狀態:調用 start 方法,處於就緒狀態的線程並不一定馬上就會執行 run 方法,還需要等待CPU的調度
運行狀態:CPU 開始調度線程,並開始執行 run 方法
阻塞(掛起)狀態:線程的執行過程中由於一些原因進入阻塞狀態,比如:調用 sleep/wait 方法、嘗試去得到一個鎖等
結束(消亡)狀態:run 方法執行完 或者 執行過程中遇到了一個異常
(1)start()和run()的區別
通過調用Thread類的start()方法來啟動一個線程,這時此線程是處於就緒狀態,並沒有運行。調用Thread類調用run()方法來完成其運行操作的,方法run()稱為線程體,它包含了要執行的這個線程的內容,run()運行結束,此線程終止,然後CPU再調度其它線程。
(2)sleep()、wait()、yield()的區別
sleep()方法屬於Thread類,wait()方法屬於Object類。
調用sleep()方法,線程不會釋放對象鎖,只是暫停執行指定的時間,會自動恢復運行狀態;調用wait()方法,線程會放棄對象鎖,進入等待此對象的等待鎖定池,不調用notify()方法,線程永遠處於就緒(掛起)狀態。
yield()直接由運行狀態跳回就緒狀態,表示退讓線程,讓出CPU,讓CPU調度器重新調度。禮讓可能成功,也可能不成功,也就是說,回到調度器和其他線程進行公平競爭。
1.Android線程的原則
(1)為什麼不能再主線程中做耗時操作
防止ANR, 不能在UI主線程中做耗時的操作,因此我們可以把耗時的操作放在另一個工作線程中去做。操作完成後,再通知UI主線程做出相應的響應。這就需要掌握線程間通信的方式了。 在Android中提供了兩種線程間的通信方式:一種是AsyncTask機制,另一種是Handler機制。
(2)為什麼不能在非UI線程中更新UI 因為Android的UI線程是非線程安全的,應用更新UI,是調用invalidate()方法來實現界面的重繪,而invalidate()方法是非線程安全的,也就是說當我們在非UI線程來更新UI時,可能會有其他的線程或UI線程也在更新UI,這就會導致界面更新的不同步。因此我們不能在非UI主線程中做更新UI的操作。
2.Android實現多線程的幾種方式
3.為何需要多線程
多線程的本質就是非同步處理,直觀一點說就是不要讓用戶感覺到「很卡」。
4.多線程機制的核心是啥
多線程核心機制是Handler
推薦Handler講解視頻: 面試總被問到Handler?帶你從源碼的角度解讀Handler核心機制
根據上方提到的 多進程、多線程、Handler 問題,我整理了一套 Binder與Handler 機制解析的學習文檔,提供給大家進行學習參考,有需要的可以 點擊這里直接獲取!!! 裡面記錄許多Android 相關學習知識點。
Ⅲ 做Android開發 需要掌握哪些知識
Android開發是基於Linux平台,在java基礎之上,用來開發手機APP的一門編程語言
判斷是否可以從事安卓開發的相關工作,可以從以下三個方面思考:
1,Android基礎階段:平台架構特性(JAVA/C) Market/應用程序組件 環境搭建與部署/打包與發布 AVD/DDMS/AAPT 調試與測試 。
2,Android進階初級:組件Widget/ 菜單Menu/ 布局Layout 詳解 Xml解析(Pull/Dom/Sax)/JNI 解析SQL資料庫原理。
3,Android進階高級:藍牙/WIFI SMS/MMS 應用實現 深層次解析GPS原理。
實現LocationManager/LocationProvider 進行定位/跟蹤/查找/趨近警告以及Geocoder正逆向編解碼等技術細節 2D圖形庫(Graphics/View)詳解 SDCARD/感測器/手勢 應用實現
如果自身實力還不到位的話,可以點 擊 頭 像 試 聽 課 程了解一下,專業的事要由專業的人來做。
Ⅳ 安卓開發需要學什麼
安卓開發需要學:
一、應用程序
Android以Java為編程語言,使介面到功能,都有層出不窮的變化,其中Activity等同於J2ME的MIDlet,一個 Activity 類負責創建視窗,一個活動中的Activity就是在 foreground(前景)模式,背景運行的程序叫做Service。
二、中介軟體
操作系統與應用程序的溝通橋梁,並用分為兩層:函數層(Library)和虛擬機(Virtual Machine)。 Bionic是 Android 改良libc的版本。
Android 同時包含了Webkit,所謂的Webkit 就是Apple Safari瀏覽器背後的引擎。Surface flinger 是就2D或3D的內容顯示到屏幕上。Android使用工具鏈(Toolchain)為Google自製的Bionic Libc。
三、硬體抽像層
Android 的 HAL(硬體抽像層)是能以封閉源碼形式提供硬體驅動模塊。HAL
的目的是為了把 Android framework 與 Linux kernel 隔開。
讓 Android 不至過度依賴 Linux
kernel,以達成 kernel independent 的概念,也讓 Android framework
的開發能在不考量驅動程序實現的前提下進行發展。
四、編程語言
Android 是運行於 Linux kernel之上,但並不是GNU/Linux。因為在一般GNU/Linux 里支持的功能,Android 大都沒有支持。
包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以bionic 取代Glibc、以Skia 取代Cairo、再以opencore 取代FFmpeg 等等。
五、安全控制
目前Android 的 Linux kernel控制包括安全(Security),存儲器管理(Memory Managemeat),程序管理(Process Management),網路堆棧(Network Stack),驅動程序模型等。
下載Android源碼之前,先要安裝其構建工具Repo來初始化源碼。Repo 是 Android 用來輔助Git工作的一個工具。
參考資料來源:網路—android開發
Ⅳ 有Android知識點總結的朋友幫下忙傳一個 謝謝!!!
一、什麼是Android 系統。 ——Android一詞的本義指「機器人」,同時也是Google於2007年11月5日宣布的基於Linux平台的開源手機操作系統的名稱,該平台由操作系統、中間件、用戶界面和應用 軟體 組成,號稱是首個為移動終端打造的真正開放和完整的移動 軟體 。 ——2008年9月22日,美國運營商T-MobileUSA在紐約正式發布第一款Google手機——T-Mobile G1。該款手機為台*灣宏達電(HTC)代工製造,是世界上第一部使用Android操作系統的手機,支持WCDMA/HSPA網路,理論下載速率7.2Mbps,並支持Wi-Fi。 ——Android 是Google開發的基於Linux平台的開源手機操作系統。它摩托羅拉的首款Android手機CLIQ包括操作系統、用戶界面和應用程序 —— 行動電話工作所需的全部 軟體 ,而且不存在任何以往阻礙移動產業創新的專有權障礙。Google與開放手機聯盟合作開發了 Android,這個聯盟由包括中國移動、摩托羅拉、高通、宏達電和 T-Mobile 在內的 30 多家技術和無線應用的領軍企業組成。Google通過與運營商、設備製造商、開發商和其他有關各方結成深層次的合作夥伴關系,希望藉助建立標准化、開放式的行動電話 軟體 平台,在移動產業內形成一個開放式的生態系統。 ——它採用了 軟體 堆層(software stack,又名 軟體 疊層)的架構,主要分為三部分:低層以Linux核心工作為基礎,只提供基本功能,其他的應用 軟體 則由各公司自行開發,以java作為編寫程式的一部分。另外,為了推廣此技術,Google和其它幾十個手機公司建立了開放手機聯盟(Open Handset Alliance)。比如hero 的UI 界面即由HTC 自行研發,名為Senes,之前,沒有一款Android 手機有如此華麗、人性化的界面,由此帶來了Android 世界新的界面革命! ——與iPhone相似,Android採用WebKit瀏覽器引擎,具備觸摸屏、高級圖形顯示和上網功能,用戶能夠在手機上查看電子郵件、搜索網址和觀看視頻節目等,比iPhone等其他手機更強調搜索功能,界面更強大,可以說是一種融入全部Web應用的單一平台。 二、HTC、多普達是什麼。 ——多普達是宏達(HTC)的全資子公司,多普達是其自有品牌。通俗的講,多普達的東家就是宏達(HTC),負責操作多普達在國內運營。而HTC 則是台*灣的一家ODM(Original Design Manufacturer,原始設計製造商,自己設計產品,給其它品牌貼牌)廠商。 ——宏達(HTC)主要以OEM 為主,給歐美各大運營商做定製手機,原來自己本身的產品不對外銷售。宏達(HTC)旗下擁有多普達和多普達國際兩家企業,為了能使自己的家的兩個「多普達」都能夠在激烈的競爭中生存,HTC 也對它們做了一些強有力的保護措施。 ——多普達在武漢的工廠主要以零部件組裝為主,機器的主要部件主要是從上家處采購,這里指的上家自然就是宏達(HTC)了,其實從設計到生產,多數是由HTC 來負責。同時這也解釋了為什麼我們在一些評測中經常提及HTC,其實HTC XXX就是原廠型號,因為給不同的運營商定製,所以最終到了運營商手上的機器型號命名都是不同的。 ——宏達(HTC)是負責設計和生產原型手機,一開始自己並不負責銷售,銷售全都交給定製的運營商來負責,所以宏達(HTC)的合作夥伴都是各大運營商,自己家負責銷售的只有多普達。當然,現在HTC 也推出了自有品牌。所以,關於HTC 和多普達就是水貨和行貨的說法是不全對的,HTC 現在已經是個向亞太地區之外推廣的正宗手機品牌了。三、APK 是什麼。 ——APK 是Android Package 的縮寫,即Android安裝包。APK 是類似Symbian Sis 或Sisx 的文件格式。通過將APK 文件直接傳到Android 模擬器或Android 手機中執行即可安裝。我們安裝APK 一般有這樣幾種途徑: 1、使用電腦上的 91手機助手 for Android 程序,連接手機進行安裝,此方法簡單明了,只要連接好手機,在你的電腦上雙擊APK 文件,即可將程序安裝在手機上; 2、將APK 文件拷貝入手機的存儲卡,在手機上運行安裝好的APK 程序安裝器,找到拷貝的APK 文件進行安裝。 3、直接使用手機在「電子市場」、「 安卓 市場」上面在線下載安裝。(你在兩個市場下載安裝過的 軟體 ,都在data/app 和 data/app-private 的文件夾裡面,把這兩個文件夾的文件(apk和zip)都拷貝出來,放一起,用安裝有91手機助手的電腦,挨個雙擊,會顯示哪個是哪個,自己可以改好中文名字,下次再裝可就不用爬去 安卓 市場和電子市場找了,直接一頓雙擊,安完。) 四、什麼是ROM,什麼是RUU。 ——ROM,是用來刷你手機系統的數據文件,也就是Android 系統的封裝包,通過手機的工程模式解壓安裝到手機中形成你手機的操作系統。官方原版ROM 就是RUU,(相當於原版Windows XP)首先他是一個最安全的升級工具,可以讓我們安全的升級ROM (一定要對應的機型)。當我們在刷機過程中由於不當的操作或版本選擇的錯誤,導致無法啟動,可以使用官方的RUU 程序來恢復系統,等於說,這是一個救命道具。 ——除了官方的RUU 之外,還能運行很多由高手們自製、定製、優化了的Android 系統,比如安逸、MoDaCo、FLZYUP 這些ROM ,就好像一個Ghost XP 的Ghost 文件,就如同深度、番茄花園、雨木林風等等不同的Ghost XP 系統,直接拷貝在存儲卡上,使用手機的Recovery 模式就可以安裝。五、什麼是Radio。 ——Radio指代的是通訊模塊,就是手機裡面負責信號部分的模塊,PDA類型的手機,基本都強調這么個概念。一個是PDA,一個是手機(貌似是句廢話- -),舉個很簡單的例子,以三星的PPC手機為例,比如i718.比如i908,他們在刷機的時候(所謂刷機就是重裝系統)一般都是分兩部分,第一部分刷手機部分,第二部分刷PDA部分,而且兩部分基本不相干。 六、我怎麼知道我的手機版本。 在手機設置——關於手機,可以查看你的固件、手機操作系統、radio(baseband版本即是)的版本。根據你的使用情況和你的手機的版本,你可以決定是否對手機進行升級。 七、什麼是app2sd。 ——Google 手機的 軟體 為了安全性和穩定性都是默認安裝到手機內存里,但是手機內存有限,所以我們會做app2sd 操作,來讓我們安裝的 軟體 放到sd卡上,而Google 的android 系統是基於Linux 的,所以存儲卡上本身的Fat 格式是不會被識別的,所以我們要分區(第二分區)出來,格式成Linux 認識的ext2 或3 或4 格式,在用鏈接命令,把這個分區映射成一個系統文件夾system/sd(大概這個意思),把所有的 軟體 裝到這個「文件夾」下,這就是app2sd 的操作。需要ROM 支持並開啟app2sd 功能。 ——app2sd 的操作其實是犧牲了一部分 軟體 的速度和穩定性來換取更多的手機內存安裝更多的 軟體 。另外,app2sd只是把 軟體 放到了sd卡上,運行 軟體 還是需要佔用手機的內存的,所以,你裝了 軟體 之後,一般手機內存還是會減少一些。你如果安裝的 軟體 在70個以內,個人覺得沒有必要,呵呵,如果很多游戲 軟體 除外。此外,使用app2sd 最大的好處就是,刷一個帶app2sd 的rom 之後,以後升級這個rom(依然帶app2sd)的時候,你的 軟體 都會完整保存(個別除外,比如htc 無效 chinese需要重新添加幾個文件到system/lib下),不過很多ROM 是需要Wipe ext 分區的,也就不能保留了。 ——目前來看我們現在所使用的Android 各種 軟體 暫時還沒有進行app2sd 的必要。
Ⅵ 新手剛剛學習android,推薦android開發的入門教程
學習android注意事項:
1,android技術准備實訓目標:通過這部分的學習,學員能夠達到學習android開發課程的基本要求。熟練使用Java語言,實現GUI桌面應用程序的開發JDK的安裝和配置開發工具Eclipse3.4安裝。實訓知識點: Java標識符、數據類型流程式控制制、面向對象編程、繼承、抽象類、介面、包、異常、IO流、Swing、游戲演算法介紹
,2,android入門實訓目標:通過這部分的學習,學員具備了android程序開發的能力,能獨立完成常用的應用軟體。實訓知識點: Android系統概述和內置工具、Android 開發環境的搭建和啟動模擬器、建立android工程、Android應用程序開發及運行編譯結構、API參考文檔的使用、使用am工具啟動android應用程序、部署應用到真實手機、控制項和事件編程、菜單編程、對話框編程、視圖組編程、各種布局的使用、Grid視圖組、List視圖組、使用Tab組織UI
,3,android進階實訓目標:通過這部分的學習,學員的android開發能力會有大幅提高。等感測器編程、android優化和性能提高。實訓知識點及案例分析:Service概述、創建和啟動、生命周期、許可權及跨進程調用;廣播的概念及生命周期、廣播發送的許可權廣播接收器的實現、接收SMS簡訊、播放MP3;內容提供器的概念作用和常見介面、使用內容提供器實現增刪改查、內容提供其許可權和創建內容提供器、SQLite資料庫添刪改查操作、使用list視圖組顯示數據;Widget概念和製作方法、Widget各種XML描述文件詳解2D圖形圖像及文本、Gallery UI編程、GridView編程、OnDraw編程、drawable編程基本動畫編程技巧、Tween動畫、Frame動畫、TimerOpenGL ES的2D和3D繪圖GPS服務、GPRS網路使用、android藍牙開發、android方向、加速表、光線、磁場、臨近性、溫度
4,項目實戰實訓目標:本階段讓學員開發,設計Android網上購物系統,其中包括Android圖形界面開發,Android聲音,Android網路通訊,和伺服器後端進行通訊交換數據。
Android基礎知識:
一、Android開發的分類:
1、Android客戶端應用程序
如新浪微博、網銀客戶端、凡客、淘寶客戶端,快盤客戶端。Android在這里的應用還是界面層的東西為主。核心還在WEB。客戶端界面很重要,用戶體驗度很重要。從應用需求上來講,幾乎大一點的網站,都需要有手機客戶端程序。
2、Android通用類程序
如基於LBS(基於位置的服務)的應用 (這類一般會嵌入到客戶端應用程序中),流媒體播放應用。由於移動設備的方便便捷、3G、4G網路的發展,這類應用有不錯的前景。
3、Android游戲開發
需要掌握的游戲引擎LGame,游戲框架等。手機上的游戲會是一大塊內容,有前途。
4、Android底層開發
需要掌握C、Linux等較底層的東西,發展方向應該是驅動、協議開發,嵌入式開發。
開始學習了解一般從界面、控制項開始,這也是大部分人認為簡單、比較快上手的原因。學習一段時間後,自己可以定一個方向發展。
二、Android學習需要哪些知識點
1、Java基礎知識
J2SE:Java基礎類(lang包,IO包,util包(集合框架),面向對象,多線程,網路編程)
2、J2EE知識
如果你想從事的Android客戶端應用程序的開發,這部分知識是必備的。顯然Android客戶端只是做的數據的請求、展現,所需的數據在伺服器端。
技能點:Tomcat(Weblogic),XML解析,JSON解析,JSP/Servlet。了解SSH。
3、Linux、C語言知識
可以作為你後續發展需要了解的。
在論壇上、QQ上看到不少童鞋Java基礎還比較欠缺,就開始搞Android了,當然就問題多多。學習熱情可嘉,但需要打一個好的基礎,有一個好的學習路線。
三、Android學習比較好的資料
1、應該說現在市面上的書,入門的還是不少,但一般現在只講了簡單控制項的單個用法。
《Android開發範例大全》,《Android應用開發詳解》可以參考。想了解游戲的話,可以參考《Android2.0游戲開發實戰寶典》。
2、Android學習視頻,也基本上停留在講簡單入門,單個控制項用法為主,這方面遠不及Java,J2EE,SSH的視頻那麼豐富。應該講,你看完了這些,離開發還有很大一段距離。而且,這些視頻在講課方法上不如一些Java的好。現在的視頻資料太豐富,從哈佛、斯坦福的課程,到IPHONE開發課程,都有。但全部跟著視頻完成所有的學習,有很長一段跟要走。
3、Android的論壇比較多,論壇的缺點就是什麼東西得自己一個個查找、去等。自學是一個艱苦而漫長的過程。對你的鍛煉和提升也最大。自學有一個缺點,就是容易迷失方向,一個知識點你永遠不知道要掌握多深,相關的應用是什麼。自學就好比像你一個人在走一條目標很遠,前面叉路很多的暗道一樣。
4、培訓機構學習。如果你時間上允許不失為一種好的選擇,可以快速入門。互聯網產品(時代)有一個重要特點,就是拿資金換時間。如果能快速入門,到這個行業去發展,就比自己慢慢學習要好得多。畢竟現在Android開發太熱了。對開發人員的要求也會逐漸提高。(如既要求能做Android開發,又做IPHONE移植開發)。