- 相關(guān)推薦
android面試題(3)
需要注意的是如果這幾個(gè)方法交織在一起的話,會(huì)出現(xiàn)什么情況呢?
一個(gè)原則是Service的onCreate的方法只會(huì)被調(diào)用一次,就是你無(wú)論多少次的startService又bindService,Service只被創(chuàng)建一次。
如果先是bind了,那么start的時(shí)候就直接運(yùn)行Service的onStart方法,如果先是start,那么bind的時(shí)候就直接運(yùn)行onBind方法。
如果service運(yùn)行期間調(diào)用了bindService,這時(shí)候再調(diào)用stopService的話,service是不會(huì)調(diào)用onDestroy方法的,service就stop不掉了,只能調(diào)用UnbindService, service就會(huì)被銷毀
如果一個(gè)service通過(guò)startService 被start之后,多次調(diào)用startService 的話,service會(huì)多次調(diào)用onStart方法。多次調(diào)用stopService的話,service只會(huì)調(diào)用一次onDestroyed方法。
如果一個(gè)service通過(guò)bindService被start之后,多次調(diào)用bindService的話,service只會(huì)調(diào)用一次onBind方法。
多次調(diào)用unbindService的話會(huì)拋出異常。
15. 不用service,B頁(yè)面為音樂(lè)播放,從A跳轉(zhuǎn)到B,再返回,如何使音樂(lè)繼續(xù)播放?
這個(gè)問(wèn)題問(wèn)的很山寨.默認(rèn)不做任何處理,B里面的音樂(lè)都能播放.
遇到問(wèn)題, 可以隨機(jī)應(yīng)變,靈活發(fā)揮,多考慮些細(xì)節(jié),比如說(shuō)這個(gè)題就可以這樣說(shuō),說(shuō)說(shuō)你對(duì)startActivityForResult的理解()
A開啟B的時(shí)候,用startActivityForResult()方法, B返回的時(shí)候把播放的狀態(tài)信息返回給A ,A繼續(xù)播放音樂(lè).
16. 什么是IntentService?有何優(yōu)點(diǎn)?
普通的service ,默認(rèn)運(yùn)行在ui main 主線程
Sdk給我們提供的方便的,帶有異步處理的service類,
異步處理的方法 OnHandleIntent()
OnHandleIntent() 處理耗時(shí)的操作
17. 什么時(shí)候使用Service?
擁有service的進(jìn)程具有較高的優(yōu)先級(jí)
官方文檔告訴我們,Android系統(tǒng)會(huì)盡量保持擁有service的進(jìn)程運(yùn)行,只要在該service已經(jīng)被啟動(dòng)(start)或者客戶端連接(bindService)到它。當(dāng)內(nèi)存不足時(shí),需要保持,擁有service的進(jìn)程具有較高的優(yōu)先級(jí)。
1. 如果service正在調(diào)用onCreate, onStartCommand或者onDestory方法,那么用于當(dāng)前service的進(jìn)程相當(dāng)于前臺(tái)進(jìn)程以避免被killed。
2. 如果當(dāng)前service已經(jīng)被啟動(dòng)(start),擁有它的進(jìn)程則比那些用戶可見(jiàn)的進(jìn)程優(yōu)先級(jí)低一些,但是比那些不可見(jiàn)的進(jìn)程更重要,這就意味著service一般不會(huì)被killed.
3. 如果客戶端已經(jīng)連接到service (bindService),那么擁有Service的進(jìn)程則擁有最高的優(yōu)先級(jí),可以認(rèn)為service是可見(jiàn)的。
4. 如果service可以使用startForeground(true)方法來(lái)將service設(shè)置為前臺(tái)狀態(tài),那么系統(tǒng)就認(rèn)為是對(duì)用戶可見(jiàn)的,并不會(huì)在內(nèi)存不足時(shí)killed。
如果有其他的應(yīng)用組件作為Service,Activity等運(yùn)行在相同的進(jìn)程中,那么將會(huì)增加該進(jìn)程的重要性。
1.Service的特點(diǎn)可以讓他在后臺(tái)一直運(yùn)行,可以在service里面創(chuàng)建線程去完成耗時(shí)的操作. 天氣預(yù)報(bào) widget TimerTask Timer 定期執(zhí)行timertask
2.Broadcast receiver捕獲到一個(gè)事件之后,可以起一個(gè)service來(lái)完成一個(gè)耗時(shí)的操作.
Broadcast receiver生命周期 和 響應(yīng)時(shí)間很短
3.遠(yuǎn)程的service如果被啟動(dòng)起來(lái),可以被多次bind, 但不會(huì)重新create. 索愛(ài)手機(jī)X10i的人臉識(shí)別的service可以被圖庫(kù)使用,可以被攝像機(jī),照相機(jī)等程序使用.
18. 請(qǐng)描述一下Intent 和 Intent Filter。
Android 中通過(guò) Intent 對(duì)象來(lái)表示一條消息,一個(gè) Intent 對(duì)象不僅包含有這個(gè)消息的目的地,還可以包含消息的內(nèi)容,這好比一封 Email,其中不僅應(yīng)該包含收件地址,還可以包含具體的內(nèi)容。對(duì)于一個(gè) Intent 對(duì)象,消息“目的地”是必須的,而內(nèi)容則是可選項(xiàng)。
通過(guò)Intent 可以實(shí)現(xiàn)各種系統(tǒng)組件的調(diào)用與激活.
Intent filter: 可以理解為郵局或者是一個(gè)信箋的分揀系統(tǒng)…
這個(gè)分揀系統(tǒng)通過(guò)3個(gè)參數(shù)來(lái)識(shí)別
Action: 動(dòng)作 view
Data: 數(shù)據(jù)uri uri
Category : 而外的附加信息
Action 匹配
Action 是一個(gè)用戶定義的字符串,用于描述一個(gè) Android 應(yīng)用程序組件,一個(gè) Intent Filter 可以包含多個(gè) Action。在 AndroidManifest.xml 的 Activity 定義時(shí)可以在其 節(jié)點(diǎn)指定一個(gè) Action 列表用于標(biāo)示 Activity 所能接受的“動(dòng)作”,例如:
……
如果我們?cè)趩?dòng)一個(gè) Activity 時(shí)使用這樣的 Intent 對(duì)象:
Intent intent =new Intent();
intent.setAction("cn.itcast.action");
那么所有的 Action 列表中包含了“cn.itcast”的 Activity 都將會(huì)匹配成功。
Android 預(yù)定義了一系列的 Action 分別表示特定的系統(tǒng)動(dòng)作。這些 Action 通過(guò)常量的方式定義在 android.content. Intent中,以“ACTION_”開頭。我們可以在 Android 提供的文檔中找到它們的詳細(xì)說(shuō)明。
URI 數(shù)據(jù)匹配
一個(gè) Intent 可以通過(guò) URI 攜帶外部數(shù)據(jù)給目標(biāo)組件。在 節(jié)點(diǎn)中,通過(guò) 節(jié)點(diǎn)匹配外部數(shù)據(jù)。
mimeType 屬性指定攜帶外部數(shù)據(jù)的數(shù)據(jù)類型,scheme 指定協(xié)議,host、port、path 指定數(shù)據(jù)的位置、端口、和路徑。如下:
android:host="host" android:port="port" android:path="path"/>
電話的uri tel: 12345
http://www.baidu.com
自己定義的uri itcast://cn.itcast/person/10
如果在 Intent Filter 中指定了這些屬性,那么只有所有的屬性都匹配成功時(shí) URI 數(shù)據(jù)匹配才會(huì)成功。
Category 類別匹配
節(jié)點(diǎn)中可以為組件定義一個(gè) Category 類別列表,當(dāng) Intent 中包含這個(gè)列表的所有項(xiàng)目時(shí) Category 類別匹配才會(huì)成功。
默認(rèn)是DEFAULT
【android面試題(3)】相關(guān)文章:
android面試題目09-08
Android工程師的面試題08-07
Android工程師面試題10-24
Microsoft面試題09-04
iOS面試題07-10
公司面試題09-12
hibernate面試題10-18
英語(yǔ)面試題精選06-13
小升初面試題06-10