Android基礎(chǔ)知識(shí)點(diǎn)

最近考慮跳槽的小伙伴應(yīng)該很多碰酝,我自己也在做一些知識(shí)點(diǎn)的整理,分享給大家~最新內(nèi)容更新于github/oo1993448102

  • 四大組件是什么
    </br>均需注冊(cè)使用

    • Activity

    • Service </br>
      startService:service生命周期與啟動(dòng)它的組件無關(guān)澎迎,需要顯示銷毀

      bindService:生命周期與調(diào)用者綁定

    • ContentProvider
      </br>跨應(yīng)用數(shù)據(jù)共享 IPC的一種

    • BroadcastReceiver
      </br>靜態(tài)注冊(cè)+動(dòng)態(tài)注冊(cè)(register+unregister)

  • 四大組件的生命周期和簡(jiǎn)單用法
    </br>Activity:

       protected void onCreate(Bundle savedInstanceState);  
         
       protected void onStart();     
         
       protected void onRestart();  
         
       protected void onResume();  
         
       protected void onPause();  
         
       protected void onStop();  
         
       protected void onDestroy();  
       
    

    Service:</br>
    startService():

    image

    stopService():
    image

    bindService():
    image

    unbindService():
    image

    startService()+bindService():
    image

    ContentProvider:</br>
    ContentProvider只有一個(gè)onCreate()生命周期方法且只會(huì)被調(diào)用一次,當(dāng)其他應(yīng)用通過ContentResolver第一次訪問該ContentProvider時(shí),onCreate()方法將會(huì)被回調(diào)

    BroadcastReceiver:</br>
    動(dòng)態(tài)注冊(cè)與注冊(cè)的context同周期</br>
    靜態(tài)注冊(cè) onReceive()后被注銷

  • Activity之間的通信方式

    • Intent
    • SharedPreference\寫入本地文件
    • SQLite 各種orm
    • 靜態(tài)變量
    • ......
  • Activity各種情況下的生命周期
    http://www.reibang.com/p/e46d449467d5

  • 橫豎屏切換的時(shí)候夹供,Activity 各種情況下的生命周期
    </br>1.不設(shè)置 Activity 的 android:configChanges 時(shí)辑莫,切屏?xí)匦抡{(diào)用各個(gè)生命周期默認(rèn)首先銷毀 當(dāng)前 activity,然后重新加載。

    2.設(shè)置 Activity android:configChanges="orientation|keyboardHidden|screenSize"時(shí)罩引,切 屏不會(huì)重新調(diào)用各個(gè)生命周期,只會(huì)執(zhí)行 onConfigurationChanged 方法枝笨。直接設(shè)置屏幕方向可以免去這個(gè)問題袁铐。

  • Activity與Fragment之間生命周期比較</br>


  • Activity上有Dialog的時(shí)候按Home鍵時(shí)的生命周期
    </br> 按Home:onPause() onStop()
    </br>返回App:onRestart() onStart() onResume()
    </br>dialog出現(xiàn)與否不影響生命周期 嘗試時(shí)使用的是AlertDialog

  • 兩個(gè)Activity 之間跳轉(zhuǎn)時(shí)必然會(huì)執(zhí)行的是哪幾個(gè)方法?
    </br>A跳轉(zhuǎn)B:A的onPause() 若A不可見 onStop()
    </br> B的onCreate(),onStart(),onResume()

  • 前臺(tái)切換到后臺(tái)横浑,然后再回到前臺(tái)剔桨,Activity生命周期回調(diào)方法。彈出Dialog徙融,生命值周期回調(diào)方法
    </br> 按Home:onPause() onStop()
    </br>返回App:onRestart() onStart() onResume()
    </br>dialog出現(xiàn)與否不影響生命周期 嘗試時(shí)使用的是AlertDialog

  • Activity的四種啟動(dòng)模式對(duì)比

    • standard 標(biāo)準(zhǔn)模式洒缀,每次都新建一個(gè)實(shí)例對(duì)象
    • singleTop 如果在任務(wù)棧頂發(fā)現(xiàn)了相同的實(shí)例則重用,且調(diào)用原來實(shí)例的onNewIntent()方法欺冀,否則新建并壓入棧頂
    • singleTask 如果在任務(wù)棧中發(fā)現(xiàn)了相同的實(shí)例树绩,將其上面的任務(wù)終止并移除,重用該實(shí)例隐轩,且調(diào)用原來實(shí)例的onNewIntent()方法饺饭。否則新建實(shí)例并入棧
    • singleInstance 在新任務(wù)棧中開啟,許不同應(yīng)用职车,進(jìn)程線程等共用一個(gè)實(shí)例瘫俊,無論從何應(yīng)用調(diào)用該實(shí)例都重用,且調(diào)用原來實(shí)例的onNewIntent()方法
  • Activity狀態(tài)保存與恢復(fù)
    </br>onSaveInstanceState():

    • 屏幕旋轉(zhuǎn)重建會(huì)調(diào)用onSaveInstanceState()
    • 啟動(dòng)另一個(gè)activity當(dāng)前activity在離開前會(huì)調(diào)用onSaveInstanceState()
    • 按Home鍵的情形和啟動(dòng)另一個(gè)activity一樣, 當(dāng)前activity在離開前會(huì)onSaveInstanceState()

    onRestoreInstanceState():

    • 屏幕旋轉(zhuǎn)重建會(huì)調(diào)用onRestoreInstanceState()
    • 啟動(dòng)另一個(gè)activity悴灵,返回時(shí)如果因?yàn)楸幌到y(tǒng)殺死需要重建, 則會(huì)從onCreate()重新開始生命周期, 調(diào)用onRestoreInstanceState()
    • 按Home鍵的情形和啟動(dòng)另一個(gè)activity一樣扛芽,用戶再次點(diǎn)擊應(yīng)用圖標(biāo)返回時(shí), 如果重建發(fā)生, 則會(huì)調(diào)用onCreate()和onRestoreInstanceState()

    屏幕旋轉(zhuǎn):</br>


    image

    image

    </br>Home:


    image
  • Fragment各種情況下的生命周期
    </br>hide show: onHiddenChanged()
    </br>viewpager: setUserVisibleHint()

  • Fragment之間傳遞數(shù)據(jù)的方式?

    • 拿到fragment對(duì)象积瞒,直接傳參
    • 接口回調(diào)
    • 事件分發(fā)
    • ......
  • Activity 怎么和Service 綁定川尖?
    </br>bindService 方法啟動(dòng)服務(wù), 其它組件可以通過回調(diào)獲取服務(wù)的代理對(duì)象和服務(wù)交互, 而這兩方也進(jìn)行了綁定, 當(dāng)啟動(dòng)方銷毀時(shí), 服務(wù)也會(huì)自動(dòng)進(jìn)行 unBind 操作, 當(dāng)發(fā)現(xiàn)所有綁定都進(jìn)行了 unBind 時(shí)才會(huì)銷毀服務(wù).

  • 怎么在Activity中啟動(dòng)自己對(duì)應(yīng)的Service?
    </br>在 Activity 中可以通過 startService 和 bindService 方法啟動(dòng) Service赡鲜。

  • service和activity怎么進(jìn)行數(shù)據(jù)交互空厌?

    • bindService 通過Binder得到Service對(duì)象
    • 廣播
    • ......
  • Service的開啟方式
    </br>startService && bindService

  • 請(qǐng)描述一下Service 的生命周期

    image

  • 談?wù)勀銓?duì)ContentProvider的理解
    </br>ContentProvider一般為存儲(chǔ)和獲取數(shù)據(jù)提供統(tǒng)一的接口,提供了對(duì)底層數(shù)據(jù)存儲(chǔ)方式的抽象,可以在不同的應(yīng)用程序之間共享數(shù)據(jù)银酬。

  • 說說ContentProvider嘲更、ContentResolver、ContentObserver 之間的關(guān)系

    • ContentProvider:應(yīng)用提供
    • ContentResolver:統(tǒng)一管理與不同ContentProvider間的操作揩瞪,通過統(tǒng)一ContentResolver訪問不同ContentProvider
    • ContentObserver 內(nèi)容監(jiān)聽器, 可以監(jiān)聽數(shù)據(jù)的改變狀態(tài)
  • 請(qǐng)描述一下廣播BroadcastReceiver的理解

  • 廣播的分類
    </br>廣播接受器赋朦,通過action進(jìn)行匹配,任意一個(gè)action匹配則成功。一個(gè)廣播接收器可以接收多個(gè)廣播發(fā)出者發(fā)出的廣播宠哄,一個(gè)廣播發(fā)出者也可以得到多個(gè)廣播接收器的回應(yīng)壹将。
    </br>動(dòng)態(tài)注冊(cè),多次注冊(cè)同一個(gè)廣播只有一個(gè)實(shí)例毛嫉,必須顯示unregister
    </br>靜態(tài)注冊(cè)诽俯,onReceive后會(huì)自己注銷,所以每次接收時(shí)自動(dòng)生成一個(gè)新的實(shí)例
    </br>廣播底層由Binder實(shí)現(xiàn)

  • 廣播使用的方式和場(chǎng)景
    </br>廣播的發(fā)送者和接收者事先是不需要知道對(duì)方的存在的承粤,這樣帶來的好處便是暴区,系統(tǒng)的各個(gè)組件可以松耦合地組織在一起
    </br>監(jiān)聽系統(tǒng)廣播 (區(qū)別EventBus)
    </br>進(jìn)程間通信 (區(qū)別EventBus)

  • 本地廣播和全局廣播有什么差別?
    </br>Broadcast是針對(duì)應(yīng)用間辛臊、應(yīng)用與系統(tǒng)間仙粱、應(yīng)用內(nèi)部進(jìn)行通信的一種方式 廣播底層Binder
    </br>LocalBroadcast比較輕量,由handler實(shí)現(xiàn),僅在自己的應(yīng)用內(nèi)發(fā)送接收廣播彻舰,也就是只有自己的應(yīng)用能收到伐割,數(shù)據(jù)更加安全廣播只在這個(gè)程序里,而且效率更高刃唤。

  • BroadcastReceiver隔心,LocalBroadcastReceiver 區(qū)別
    </br>LocalBroadcastReceiver不能靜態(tài)注冊(cè),只能采用動(dòng)態(tài)注冊(cè)的方式尚胞。
    在發(fā)送和注冊(cè)的時(shí)候采用济炎,LocalBroadcastManager的sendBroadcast方法和registerReceiver方法

  • AlertDialog,popupWindow,DialogFragment區(qū)別
    </br>AlertDialog是非阻塞線程的,Popupwindow是阻塞線程的辐真。
    </br> DialogFragment fragmentManager會(huì)自動(dòng)管理DialogFragment的生命周期.

  • Application 和 Activity 的 Context 對(duì)象的區(qū)別
    </br>生命周期長短须尚,使用Activity的Context持有某些靜態(tài)引用會(huì)引起內(nèi)存泄漏

    image

數(shù)字1:?jiǎn)?dòng)Activity在這些類中是可以的灶芝,但是需要?jiǎng)?chuàng)建一個(gè)新的task生兆。一般情況不推薦仍侥。

數(shù)字2:在這些類中去layout inflate是合法的恃慧,但是會(huì)使用系統(tǒng)默認(rèn)的主題樣式睡雇,如果你自定義了某些樣式可能不會(huì)被使用污尉。

數(shù)字3:在receiver為null時(shí)允許坟乾,在4.2或以上的版本中啃沪,用于獲取黏性廣播的當(dāng)前值昧廷。(可以無視)

  • Android屬性動(dòng)畫特性
    </br>與視圖動(dòng)畫相對(duì)堪嫂,3.0 API11后出現(xiàn),可用于任何對(duì)象上木柬,在改變視圖的同時(shí)改變屬性皆串,為了兼容可使用開源庫

    ValueAnimator
    </br>ObjectAnimator

  • 如何導(dǎo)入外部數(shù)據(jù)庫?
    http://blog.csdn.net/jing__jie/article/details/51602587

  • LinearLayout、RelativeLayout眉枕、FrameLayout的特性及對(duì)比恶复,并介紹使用場(chǎng)景

    • FrameLayout: 沒有過多的測(cè)量 所有子view默認(rèn)排放左上角
    • LinearLayout:線性布局怜森,支持weight,會(huì)測(cè)量?jī)纱?/li>
    • RelativeLayout:相對(duì)布局谤牡,兩次測(cè)量
      </br>沒有嵌套的情況下副硅,LinearLayout,F(xiàn)rameLayout性能優(yōu)于RelativeLayout翅萤,RelativeLayout的功能比較復(fù)雜恐疲,它的布局過程需要花費(fèi)更多的CPU時(shí)間

    布局調(diào)優(yōu)工具

    • hierarchy viewer
    • lint
    • Android Device Monitor (左上方截圖功能的右邊,dump)
  • 談?wù)剬?duì)接口與回調(diào)的理解
    </br>可以用于實(shí)現(xiàn)觀察者模式套么、事件監(jiān)聽

  • 介紹下SurfaceView

    1 . View適用于主動(dòng)更新的情況流纹,而SurfaceView則適用于被動(dòng)更新的情況,比如頻繁刷新界面违诗。

    2 . View在主線程中對(duì)頁面進(jìn)行刷新,而SurfaceView則開啟一個(gè)子線程來對(duì)頁面進(jìn)行刷新疮蹦。

    3 . View在繪圖時(shí)沒有實(shí)現(xiàn)雙緩沖機(jī)制诸迟,SurfaceView在底層機(jī)制中就實(shí)現(xiàn)了雙緩沖機(jī)制。(雙緩沖技術(shù)是游戲開發(fā)中的一個(gè)重要的技術(shù)愕乎。當(dāng)一個(gè)動(dòng)畫爭(zhēng)先顯示時(shí)阵苇,程序又在改變它,前面還沒有顯示完感论,程序又請(qǐng)求重新繪制绅项,這樣屏幕就會(huì)不停地閃爍。而雙緩沖技術(shù)是把要處理的圖片在內(nèi)存中處理好之后比肄,再將其顯示在屏幕上快耿。雙緩沖主要是為了解決 反復(fù)局部刷屏帶來的閃爍。把要畫的東西先畫到一個(gè)內(nèi)存區(qū)域里芳绩,然后整體的一次性畫出來掀亥。)
    SurfaceView 詳解

  • RecyclerView的使用
    </br>略

  • 序列化的作用,以及Android兩種序列化的區(qū)別
    </br>序列化:對(duì)象 --> 字節(jié)流 反序列化:字節(jié)流-->對(duì)象

    • Serializable Java 序列化接口 IO讀寫存儲(chǔ)在硬盤上 利于數(shù)據(jù)持久化
    • Parcelable Android 序列化接口 效率高 在內(nèi)存中讀寫 使用麻煩 (AS有相關(guān)插件 一鍵生成所需方法)
      image
  • 差值器(TimeInterpolator) 估值器(TypeEvaluator)
    </br>屬性動(dòng)畫中使用 用于實(shí)現(xiàn)非線性動(dòng)畫
    </br> TimeInterpolator:根據(jù)時(shí)間流逝的百分比計(jì)算出當(dāng)前屬性值改變的百分比妥色。
    </br> TypeEvaluator:根據(jù)當(dāng)前屬性改變的百分比來計(jì)算改變后的屬性值搪花。
    </br>具體可參考扔物線的教程

  • Android中數(shù)據(jù)存儲(chǔ)方式
    </br>SOLite SharedPreferences

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市嘹害,隨后出現(xiàn)的幾起案子撮竿,更是在濱河造成了極大的恐慌,老刑警劉巖笔呀,帶你破解...
    沈念sama閱讀 211,948評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件幢踏,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡许师,警方通過查閱死者的電腦和手機(jī)惑折,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門授账,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人惨驶,你說我怎么就攤上這事白热。” “怎么了粗卜?”我有些...
    開封第一講書人閱讀 157,490評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵屋确,是天一觀的道長。 經(jīng)常有香客問我续扔,道長攻臀,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,521評(píng)論 1 284
  • 正文 為了忘掉前任纱昧,我火速辦了婚禮刨啸,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘识脆。我一直安慰自己设联,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評(píng)論 6 386
  • 文/花漫 我一把揭開白布灼捂。 她就那樣靜靜地躺著离例,像睡著了一般。 火紅的嫁衣襯著肌膚如雪悉稠。 梳的紋絲不亂的頭發(fā)上宫蛆,一...
    開封第一講書人閱讀 49,842評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音的猛,去河邊找鬼耀盗。 笑死,一個(gè)胖子當(dāng)著我的面吹牛卦尊,可吹牛的內(nèi)容都是我干的袍冷。 我是一名探鬼主播,決...
    沈念sama閱讀 38,997評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼猫牡,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼胡诗!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起淌友,我...
    開封第一講書人閱讀 37,741評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤煌恢,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后震庭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瑰抵,經(jīng)...
    沈念sama閱讀 44,203評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評(píng)論 2 327
  • 正文 我和宋清朗相戀三年器联,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了二汛。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片婿崭。...
    茶點(diǎn)故事閱讀 38,673評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖肴颊,靈堂內(nèi)的尸體忽然破棺而出氓栈,到底是詐尸還是另有隱情,我是刑警寧澤婿着,帶...
    沈念sama閱讀 34,339評(píng)論 4 330
  • 正文 年R本政府宣布授瘦,位于F島的核電站,受9級(jí)特大地震影響竟宋,放射性物質(zhì)發(fā)生泄漏提完。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評(píng)論 3 313
  • 文/蒙蒙 一丘侠、第九天 我趴在偏房一處隱蔽的房頂上張望徒欣。 院中可真熱鬧,春花似錦蜗字、人聲如沸打肝。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至戏羽,卻和暖如春担神,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背始花。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評(píng)論 1 266
  • 我被黑心中介騙來泰國打工妄讯, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人酷宵。 一個(gè)月前我還...
    沈念sama閱讀 46,394評(píng)論 2 360
  • 正文 我出身青樓亥贸,卻偏偏與公主長得像,于是被迫代替她去往敵國和親浇垦。 傳聞我的和親對(duì)象是個(gè)殘疾皇子炕置,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容