android重要知識點(diǎn)總結(jié)
Android知識點(diǎn)整理
一、四大組件
Activity (生命周期可編輯onResume和可見onStart,不可編輯onPause和不可見onStop)、Service (AIDL,開始方式)、BroadcastReceived(有序,無序) 、ContentProvider(Uri)
二、五大布局
LinearLayout 、RelativeLayout(降低布局嵌套) 、FreamLayout 、TableLayout 、AbsoluteLayout
三、通信機(jī)制
Intent(隱式,顯示,兩個之間的數(shù)據(jù)傳遞)、Service、BroadcastReceived、Handler(多線程)、sharedPreferred(如果跳轉(zhuǎn)的次數(shù)太多,可以考慮本地文件存儲了)、file(類似于sharedPreferred)
四、動畫
幀動畫、Tween動畫(移動、縮放、旋轉(zhuǎn)、透明)
五、ListView
各種布局加載(動態(tài)加載布局)、優(yōu)化(convertView、ViewHolder、異步加載、分頁加載)、notifyDataSetChanged更新數(shù)據(jù)
六、Fragment
與Activity(使用FragmentManager)之間的通信、Fragment使用(getActivity())
七、線程、進(jìn)程
1.進(jìn)程:一個應(yīng)用程序在內(nèi)存中的鏡像
2.線程:一個進(jìn)程中可以包含多個線程
多線程、多線程下載
Thread Runnable Handler AsyncTask
應(yīng)用場景:耗時操作(一般指5秒)和定時操作(schedule Task)
具體場景:IO操作(網(wǎng)絡(luò)操作、文件操作、數(shù)據(jù)庫操作)、復(fù)雜的運(yùn)算算法、消息接收方法的耗時操作、定時任務(wù)
3. 線程池的基本思想還是一種對象池的思想,開辟一塊內(nèi)存空間,里面存放了眾多(未死亡)的線程,池中線程執(zhí)行調(diào)度由池管理器來處理。當(dāng)有線程任務(wù)時,從池中取一個,執(zhí)行完成后線程對象歸池,這樣可以避免反復(fù)創(chuàng)建線程對象所帶來的性能開銷,節(jié)省了系統(tǒng)的資源。
八、http和socket
Http(短連接)特點(diǎn)是客戶端發(fā)送的每次請求都需要服務(wù)器回送響應(yīng),在請求結(jié)束后,會主動釋放連接
Socket(長連接) 特點(diǎn) 服務(wù)器監(jiān)聽,客戶端請求,連接確認(rèn)
區(qū)別、優(yōu)缺點(diǎn)、返回碼的含義
返回碼200成功206部分成功404文件丟失503服務(wù)器未響應(yīng)
九、數(shù)據(jù)存儲
文件存儲、SharedPreference(密碼、判斷)、SQLite(繼承SQLiteOpenHelper,生成SQLiteDatabase
對象來新建處理SQL語句,數(shù)據(jù)庫升級)、網(wǎng)絡(luò)存儲(上傳、下載)
十、自定義組件
兩種方式:include(標(biāo)簽一般用merge);創(chuàng)建自定義控件(一般有響應(yīng)按鈕時調(diào)用)
兩個主要方法measure和layout,要是自定義View,顯示時用setContentView
十一、適配器
Drawable(.9圖片)、 Layout 、Values(dimen) 、Java代碼控制 、weight
十二、開源框架、開源組件
框架:Volley 、xUtil 、okhttp、eventBus、Gson、festJson、imageloader、Picasso(獲取遠(yuǎn)程圖片)、zxing(二維碼)
組件:pull2RefreshListView、SlidingMenu
十三、內(nèi)存優(yōu)化和程序優(yōu)化
1.Android優(yōu)化的布局(使用merge標(biāo)簽優(yōu)化層級、不需要立即加載的布局,設(shè)置為GONE,系統(tǒng)會跳過,不加載、使用ViewStub 實(shí)現(xiàn)按需加載、ListView的優(yōu)化)、
2. 對內(nèi)存的優(yōu)化
1.Reckon(計算)首先需要知道你的app所消耗內(nèi)存的情況,知己知彼才能百戰(zhàn)不殆
2.Reduce(減少)消耗更少的資源(BitmapFactory.Options設(shè)置inSampleSize, 這樣做可以減少對系統(tǒng)資源的要求;如果對圖片沒要求可以設(shè)置RGB_565(每像素占2字節(jié),默認(rèn)的是ARGB_8888占4個字節(jié))opt.inPreferredConfig = Bitmap.Config.RGB_565;用Bitmap.recycle()方法來釋放Bitmap占用的內(nèi)存空間)
3.Reuse(重用)當(dāng)?shù)谝淮问褂猛暌院螅M量給其他的使用
4.Recycle(回收)返回資源給生產(chǎn)流
5.Review(檢查)回顧檢查你的程序,看看設(shè)計或代碼有什么不合理的地方。)
3. 數(shù)據(jù)庫使用完成后要記得關(guān)閉cursor
4.廣播使用完之后要注銷
5. 小tip: 避免創(chuàng)建不必要的對象最常見的例子就是當(dāng)你要頻繁操作一個字符串時,使用StringBuffer代替String;避免使用枚舉,枚舉變量非常方便,但不幸的是它會犧牲執(zhí)行的速度和并大幅增加文件體積;永遠(yuǎn)不要在for的第二個條件中調(diào)用任何方法
十四、設(shè)計模式(24)
單例模式(application)、工程模式、策略模式、監(jiān)聽者模式、觀察者模式等
十五、framework
1.準(zhǔn)備Linux下的環(huán)境(python的安裝、Git的安裝(sudo apt-get install git)、安裝一些類庫、JDK的安裝(2.2以后要用jdk6.0))
2.下載源碼(安裝repo(基于git的管理工具)、初始化Repo客戶端(repo init –u **–b 版本名稱)、開始同步(repo snyc)、驗(yàn)證GitAndroid版本(gpg –import 然后輸入秘鑰 保存之后,輸入 git tag –v tag_name))
3.Building (初始化source build、envsetup.sh 、lunch full(模擬器/full_crespo真機(jī)) –eng(開發(fā)者權(quán)限)、然后編譯 make j4(單核刷機(jī)))
4.在out/target/product/generic/路徑下有三個img文件(system.img/ramdisk.img/userdata.img)
Emulator啟動模擬器
5.系統(tǒng)的程序在哪 out/target/product/generic/system/app
系統(tǒng)源代碼位置 packages/apps/***
修改 sdk(make sdk)目錄: out/target/product/generic/sdk
十六、JNI
十七、驅(qū)動開發(fā)
十八、SDK開發(fā)
十九、數(shù)據(jù)加密
對稱加密、非對稱加密
二十、程序問題的處理
OOM、ANR等
二十一、版本控制
SVN(集中式)、Git(分布式,常用命令cd/clone/init/add/commit/remote add/pull/push)
二十二、回調(diào)方法
1.回調(diào)接口方法interface
2.回調(diào)接口的實(shí)現(xiàn)(一個類去繼承接口)implements
3.回調(diào)方法的調(diào)用 new 2中的類,調(diào)用他的方法
二十三、抽象方法和接口的區(qū)別
1.抽象類里面可以有非抽象方法但接口里只能有抽象方法
2.接口(interface)是抽像類的變體。在接口中,所有方法都是抽像的。多繼承性可通過實(shí)現(xiàn)這樣的接口而獲得。接口中的所有方法都是抽像的,沒有一個有程序體。接口只可以定義static final成員變量。
3.抽象類中可以為部分方法 提供默認(rèn)的實(shí)現(xiàn),從而避免在子類中重復(fù)實(shí)現(xiàn)它們, 提高代碼的可重用性,而接口不可以,這也是抽象類的優(yōu)點(diǎn)所在
4.接口可以繼承多個,而抽象方法不行
二十四、第三方SDK
百度、高德、環(huán)信、SocketIO、友盟、leanCloud、Bomb、SharedSDK、ping++
看了“android重要知識點(diǎn)總結(jié)”的還看了:
1.高二政治必修四重要知識點(diǎn)總結(jié)(完整版)
2.管理學(xué)知識點(diǎn)總結(jié)
3.初中歷史重要知識點(diǎn)總結(jié)
4.公共基礎(chǔ)知識點(diǎn)總結(jié)
5.生物必修三第六章重要知識點(diǎn)的總結(jié)
