面試題二

1.請描述下Activity的生命周期

Activity的生命周期有:onCreate()顷链、onStart()目代、onRestart()、onResume()嗤练、onPause()榛了、onStop()、onDestory();
可見生命周期:從onStart()到onStop()
前臺生命周期:從onResume()到onPause()

2.請介紹下android的數(shù)據(jù)存儲方式

  • SharedPreferences :基于想xml文件存儲煞抬,保存一些基本的配置信息霜大。
  • SQLite:數(shù)據(jù)庫存儲
  • ContentProvider
  • 文件存儲
  • 網(wǎng)絡(luò)存儲

3.如何退出Activity?如何退出已調(diào)用多個Activity的Application革答?

退出Activity可以調(diào)用finish()方法
退出已調(diào)用對個Activity的Application:

  • 拋異常強制退出:
  • 記錄打開的每個Activity战坤,在需要退出的時候,關(guān)閉每一個Activity
  • 發(fā)送特定廣播残拐,每個Activity接收到后退出
  • 遞歸退出(途茫。。溪食。)

4.android中的動畫有哪幾類囊卜?

兩類,一類是Tween動畫眠菇,一類是Frame動畫边败。
Tween動畫,這種實現(xiàn)方式可以使視圖組件移動捎废、放大笑窜、縮小以及產(chǎn)生透明度的變化;另一種Frame動畫登疗,傳統(tǒng)的動畫方式排截,通過順序播放排列好的圖片來實現(xiàn),類似電影辐益。

5.如果后臺的Activity由于某些原因被回收了断傲,如何在被系統(tǒng)回收之前保存當(dāng)前狀態(tài)?

重寫OnSaveInstanceState()方法智政,在此方法中保存需要保存的數(shù)據(jù)认罩,該方法將會在Activity被回收之前調(diào)用。通過重寫OnRestoreInstanceState()方法可以從中提取保存好的數(shù)據(jù)续捂。

6.什么情況下會導(dǎo)致Force Close垦垂?如何避免宦搬?

程序出現(xiàn)異常,比如NullPointer
避免:編寫程序時邏輯連貫劫拗,思維縝密
導(dǎo)致異常的信息是可以捕獲的间校,在LogCat中能看到異常信息

7.請介紹下android的五中常用布局

  • FrameLayout:所有的東西依次放在左上角,會重疊
  • LinearLayout:線性布局页慷,每一次linearlayout又分為垂直布局和水平布局
  • AbsoluteLayout:用x憔足,y坐標來指定元素位置
  • RelativeLayout:
  • TableLayout:

8.請解釋下在單線程模型中,Message酒繁、Handler滓彰、Message Queen、Looper之間的關(guān)系

答:簡單的說欲逃,Handler獲取當(dāng)前線程中的looper對象找蜜,looper用來從存放Message的MessageQueue中取出Message,再有Handler進行Message的分發(fā)和處理.
Message Queue(消息隊列):用來存放通過Handler發(fā)布的消息稳析,通常附屬于某一個創(chuàng)建它的線程洗做,可以通過Looper.myQueue()得到當(dāng)前線程的消息隊列
Handler:可以發(fā)布或者處理一個消息或者操作一個Runnable,通過Handler發(fā)布消息彰居,消息將只會發(fā)送到與它關(guān)聯(lián)的消息隊列诚纸,然也只能處理該消息隊列中的消息
Looper:是Handler和消息隊列之間通訊橋梁,程序組件首先通過Handler把消息傳遞給Looper陈惰,Looper把消息放入隊列畦徘。Looper也把消息隊列里的消息廣播給所有的Handler,Handler接受到消息后調(diào)用handleMessage進行處理
Message:消息的類型抬闯,在Handler類中的handleMessage方法中得到單個的消息進行處理
在單線程模型下井辆,為了線程通信問題,Android設(shè)計了一個Message Queue(消息隊列)溶握, 線程間可以通過該Message Queue并結(jié)合Handler和Looper組件進行信息交換杯缺。下面將對它們進行分別介紹:

  1. Message
    Message消息,理解為線程間交流的信息睡榆,處理數(shù)據(jù)后臺線程需要更新UI萍肆,則發(fā)送Message內(nèi)含一些數(shù)據(jù)給UI線程。
  2. Handler
    Handler處理者胀屿,是Message的主要處理者塘揣,負責(zé)Message的發(fā)送,Message內(nèi)容的執(zhí)行處理宿崭。后臺線程就是通過傳進來的 Handler對象引用來sendMessage(Message)亲铡。而使用Handler,需要implement 該類的 handleMessage(Message)方法,它是處理這些Message的操作內(nèi)容奖蔓,例如Update UI琅摩。通常需要子類化Handler來實現(xiàn)handleMessage方法。
  3. Message Queue
    Message Queue消息隊列锭硼,用來存放通過Handler發(fā)布的消息,按照先進先出執(zhí)行蜕劝。
    每個message queue都會有一個對應(yīng)的Handler檀头。Handler會向message queue通過兩種方法發(fā)送消息:sendMessage或post。這兩種消息都會插在message queue隊尾并按先進先出執(zhí)行岖沛。但通過這兩種方法發(fā)送的消息執(zhí)行的方式略有不同:通過sendMessage發(fā)送的是一個message對象,會被 Handler的handleMessage()函數(shù)處理暑始;而通過post方法發(fā)送的是一個runnable對象,則會自己執(zhí)行婴削。
  4. Looper
    Looper是每條線程里的Message Queue的管家廊镜。Android沒有Global的Message Queue,而Android會自動替主線程(UI線程)建立Message Queue唉俗,但在子線程里并沒有建立Message Queue嗤朴。所以調(diào)用Looper.getMainLooper()得到的主線程的Looper不為NULL,但調(diào)用Looper.myLooper() 得到當(dāng)前線程的Looper就有可能為NULL虫溜。對于子線程使用Looper雹姊,API Doc提供了正確的使用方法:這個Message機制的大概流程:
    1. 在Looper.loop()方法運行開始后,循環(huán)地按照接收順序取出Message Queue里面的非NULL的Message衡楞。
    2. 一開始Message Queue里面的Message都是NULL的吱雏。當(dāng)Handler.sendMessage(Message)到Message Queue,該函數(shù)里面設(shè)置了那個Message對象的target屬性是當(dāng)前的Handler對象瘾境。隨后Looper取出了那個Message歧杏,則調(diào)用 該Message的target指向的Hander的dispatchMessage函數(shù)對Message進行處理。在dispatchMessage方法里迷守,如何處理Message則由用戶指定犬绒,三個判斷,優(yōu)先級從高到低:
    1. Message里面的Callback盒犹,一個實現(xiàn)了Runnable接口的對象懂更,其中run函數(shù)做處理工作;
    2. Handler里面的mCallback指向的一個實現(xiàn)了Callback接口的對象急膀,由其handleMessage進行處理沮协;
    3. 處理消息Handler對象對應(yīng)的類繼承并實現(xiàn)了其中handleMessage函數(shù),通過這個實現(xiàn)的handleMessage函數(shù)處理消息卓嫂。
      由此可見慷暂,我們實現(xiàn)的handleMessage方法是優(yōu)先級最低的!
    1. Handler處理完該Message (update UI) 后,Looper則設(shè)置該Message為NULL行瑞,以便回收奸腺!
      在網(wǎng)上有很多文章講述主線程和其他子線程如何交互,傳送信息血久,最終誰來執(zhí)行處理信息之類的突照,個人理解是最簡單的方法——判斷Handler對象里面的Looper對象是屬于哪條線程的,則由該線程來執(zhí)行氧吐!
    2. 當(dāng)Handler對象的構(gòu)造函數(shù)的參數(shù)為空讹蘑,則為當(dāng)前所在線程的Looper;
  5. Looper.getMainLooper()得到的是主線程的Looper對象筑舅,Looper.myLooper()得到的是當(dāng)前線程的Looper對象座慰。

9.如何評價android系統(tǒng)的優(yōu)缺點?

優(yōu)勢:

  • 開放性:
  • 掙脫運營商的束縛
  • 豐富的硬件選擇
  • 不受任何限制的開發(fā)商
  • 無縫結(jié)合的GooGle應(yīng)用

缺點:

  • 安全和隱私
  • 運營商仍能影響android機
  • 同類型用戶減少
  • 過分依賴開發(fā)商缺少標準配置

?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末翠拣,一起剝皮案震驚了整個濱河市版仔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌误墓,老刑警劉巖蛮粮,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異谜慌,居然都是意外死亡蝉揍,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門畦娄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來又沾,“玉大人,你說我怎么就攤上這事熙卡≌人ⅲ” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵驳癌,是天一觀的道長滑燃。 經(jīng)常有香客問我,道長颓鲜,這世上最難降的妖魔是什么表窘? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮甜滨,結(jié)果婚禮上乐严,老公的妹妹穿的比我還像新娘。我一直安慰自己衣摩,他們只是感情好昂验,可當(dāng)我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般既琴。 火紅的嫁衣襯著肌膚如雪占婉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天甫恩,我揣著相機與錄音逆济,去河邊找鬼。 笑死磺箕,一個胖子當(dāng)著我的面吹牛纹腌,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播滞磺,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼莱褒!你這毒婦竟也來了击困?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤广凸,失蹤者是張志新(化名)和其女友劉穎阅茶,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谅海,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡脸哀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了扭吁。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片撞蜂。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖侥袜,靈堂內(nèi)的尸體忽然破棺而出蝌诡,到底是詐尸還是另有隱情,我是刑警寧澤枫吧,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布浦旱,位于F島的核電站,受9級特大地震影響九杂,放射性物質(zhì)發(fā)生泄漏颁湖。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一例隆、第九天 我趴在偏房一處隱蔽的房頂上張望甥捺。 院中可真熱鬧,春花似錦镀层、人聲如沸涎永。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽羡微。三九已至谷饿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間妈倔,已是汗流浹背博投。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留盯蝴,地道東北人毅哗。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像捧挺,于是被迫代替她去往敵國和親虑绵。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,713評論 2 354

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