android开发基本知识,Android应用开发基本知识点汇总
Activity
一生命周期
4種狀態(tài)running/paused/stopped/killed
生命周期
Activity發(fā)動onCreate->onStart->onResume
點Home回來主界面onPause->onStop
再次回到原ActivityonRestart->onStart->onResume
退出ActivityonPause->onStop->onDestroy
進(jìn)程優(yōu)先級前臺/可見/服務(wù)/后臺/空
二使命棧
三發(fā)動形式
standard
singleTop棧頂復(fù)用
singleTask棧內(nèi)復(fù)用
singeInstance
四scheme跳轉(zhuǎn)協(xié)議
服務(wù)器能夠定制化告知App跳轉(zhuǎn)哪個頁面,能夠經(jīng)過通知欄音訊定制化跳轉(zhuǎn)頁面,能夠經(jīng)過H5頁面跳轉(zhuǎn)頁面
Fragment
一第五大組件
為什么是第五大組件Fragment相對Activity更節(jié)約內(nèi)存,切換更舒適
Fragment加載到Activity的兩種方式
靜態(tài)加載xml
動態(tài)加載fragmentTransaction.add(id,fragment,“name”);.commit;
FragmentPagerAdapter與FragmentStatePagerAdapter
FragmentStatePagerAdapter在切換時收回內(nèi)存,合適頁面較多的狀況
FragmentPagerAdapter并沒有收回內(nèi)存,只是detach了Activity
二生命周期
onAttach->onCreate->onCreateView->onViewCreated->onActivityCreated->onStart->onResume
->onPause->onStop->onDestroyView->onDestroy->onDetach
先創(chuàng)立Activity后創(chuàng)立Fragment,先毀掉Fragment后毀掉Activity
三Fragment之間的通訊
Fragment調(diào)用ActivitygetActivity
Activity調(diào)用Fragment接口回調(diào)
Fragment調(diào)用Fragment辦法findFragmentById
四FragmentManager
replace
add
remove
Service
一運用場景,與Thread區(qū)別
Service是什么后臺長期運行,沒有用戶界面,運行在主線程,不能有耗時操作
Service與Thread區(qū)別Activity難以與Thread交互,尤其當(dāng)Activity毀掉以后
二敞開Service的兩種方式
StartService
onCreate->onStartCommand->onBind->onDestroy
onStartCommandreturnSTART_STICKY;
startService(intent);stopService(intent);
BindService
Broadcast
一播送
定義
場景可在同一個App多個進(jìn)程間音訊傳遞,可在不同App間音訊傳遞
品種Normal,System有序播送,Local本地播送
二完成方式
靜態(tài)注冊注冊完一向運行
動態(tài)注冊跟從Activity生命周期
三完成機制
四本地播送LocalBroadcastManager
因為之前的播送都是大局的,一切運用程序都能夠接納到,這樣就很簡單會引起安全性的問題,比如說咱們發(fā)送一些帶著關(guān)鍵性數(shù)據(jù)的播送有或許被其他的運用程序截獲,或許其他的程序不停地向咱們的播送接納器里發(fā)送各種廢物播送。
為了能夠簡單地解決播送的安全性問題,Android引入了一套本地播送機制,運用這個機制宣布的播送只能夠在運用程序的內(nèi)部進(jìn)行傳遞,而且播送接納器也只能接納來自運用程序宣布的播送,這樣一切的安全性問題就都不存在了。
異步音訊處理
Handler
子線程發(fā)送音訊,讓主線程更新UI
handler運用辦法post(runnable)與sendMessage(message)
handler內(nèi)存泄漏解決辦法:1.handler改為靜態(tài)內(nèi)部類2.handler內(nèi)部持有Activity外部弱引用
3.mHandler.removeCallback()
HandlerThread
多次創(chuàng)立毀掉線程很耗費系統(tǒng)資源
本質(zhì)上是線程,繼承自Thread,一起自己內(nèi)部擁有Looper目標(biāo),能夠進(jìn)行Looper循環(huán)
串行隊列,不能一起多使命處理,需求等候
handlerThread=handler+thread+looper
AsyncTask
本質(zhì)上封裝了線程池和Handler
傳入三個參數(shù)xxxAsyncTaskextendsAsyncTask運用參數(shù),進(jìn)度參數(shù),成果參數(shù)
onPreExecute在UI線程里履行
doInBackground回來參數(shù)傳給onPostExecute,中心publishProgress(i)中的參數(shù)傳給onProgressUpdate
onProgressUpdate在UI線程里履行
onPostExecute在UI線程里履行
xxxAsyncTask.cancel()
并行or串行?為了線程池安穩(wěn),系統(tǒng)默認(rèn)串行,一般建議串行,用xxxAsyncTask.executeOnExecutor履行并行
IntentService
IntentService是串行的
onHandleIntent履行耗時操作
IntentService內(nèi)部封裝了HandlerThread框架,利用HandlerThread進(jìn)行異步音訊傳遞
WebView
API16之前,沒有限制WebView.addJavascriptInterface(),攻擊者利用反射可履行任意Java目標(biāo)的辦法。
onDestroy毀掉WebView時,先要從父視圖里removeWebView,再調(diào)用WebView.removeAllViews()和WebView.destroy(),防止內(nèi)存泄漏,WebView中的Context運用弱引用。
jsbridge經(jīng)過JS構(gòu)建起的橋
WebView硬件加速導(dǎo)致頁面渲染問題
Binder
Linux的進(jìn)程間通訊有Pipe,Socket,共享內(nèi)存,信號量,信號,報文。
但是出于功能和安全考慮,Android引入了Binder機制。
Binder驅(qū)動位于內(nèi)核空間,兩個位于用戶空間的進(jìn)程間的通訊,有必要運用到Linux系統(tǒng)調(diào)用。
Binder目標(biāo)是一個跨進(jìn)程通訊的目標(biāo),由Binder驅(qū)動完成。
進(jìn)程經(jīng)過Binder驅(qū)動向ServiceManager注冊,ServiceManager維護(hù)一張表。
進(jìn)程A從ServiceManager里查詢進(jìn)程B,ServiceManager回來一個署理目標(biāo),
署理目標(biāo)經(jīng)過Binder驅(qū)動完成,將成果回來給ServiceManager。
Android構(gòu)建
將資源文件經(jīng)過aapt編譯生成R.java,將aidl文件經(jīng)過aidl編譯生成Java接口
將App源碼+R.java+aidl的Java接口,經(jīng)過Java編譯器生成.class字節(jié)碼文件
將.class經(jīng)過dex生成.dex文件(虛擬機Dalvik可履行文件)
將.dex+其它未編譯文件經(jīng)過apkbuilder生成apk
將apk經(jīng)過簽名東西jarsigner進(jìn)行簽名
將apk經(jīng)過zipalign進(jìn)行對齊操作,節(jié)約內(nèi)存開支,削減apk巨細(xì)
OKHttp
運用辦法
創(chuàng)立一個OKHttpClient目標(biāo)
創(chuàng)立一個Request目標(biāo)(經(jīng)過內(nèi)部類Builder調(diào)用生成)
創(chuàng)立一個Call目標(biāo),調(diào)用execute(同步懇求)/enqueue(異步懇求)
WebSocket心跳原理
心跳包中或許會帶著數(shù)據(jù)
當(dāng)收到Ping幀的時候需求立即回來一個Pong幀
在連接建立之后,隨時都能夠發(fā)送Ping幀
心跳是用來測驗鏈接是否存在和對方是否在線
在呼應(yīng)Ping幀的的Pong幀中,有必要攜和被呼應(yīng)的Ping幀中相同的數(shù)據(jù)
總結(jié)
以上是生活随笔為你收集整理的android开发基本知识,Android应用开发基本知识点汇总的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python模块版本管理工具_【转】Py
- 下一篇: cc2530定时器和捕获比较_ALIEN