您好,登錄后才能下訂單哦!
這篇文章主要介紹了Android面試常問七道題是什么的相關(guān)知識,內(nèi)容詳細(xì)易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Android面試常問七道題是什么文章都會有所收獲,下面我們一起來看看吧。
1、Android的四大組件以及作用
Activity:Activity是Android程序與用戶交互的窗口,是Android構(gòu)造塊中最基本的一種,它需要為保持各界面的狀態(tài),做很多持久化的事情,妥善管理生命周期以及一些跳轉(zhuǎn)邏輯。
service:后臺服務(wù)于Activity,封裝有一個完整的功能邏輯實現(xiàn),接受上層指令,完成相關(guān)的動作,定義好需要接受的Intent提供同步和異步的接口。
Content Provider:是Android提供的第三方應(yīng)用數(shù)據(jù)的訪問方案,對外提供數(shù)據(jù),屏蔽內(nèi)部數(shù)據(jù)的存儲細(xì)節(jié),向外提供統(tǒng)一的借口模型,大大簡化上層應(yīng)用對數(shù)據(jù)的整合提供了更方便的途徑。
BroadCast Receiver:接受一種或者多種Intent作觸發(fā)事件,接受相關(guān)消息,做一些簡單處理,轉(zhuǎn)換成一條Notification,統(tǒng)一了Android的事件廣播模型。
2、描述下Activity的生命周期?
Activity的生命周期方法有:onCreate()、onStart()、onReStart()、onResume()、onPause()、onStop()、onDestory();
可見生命周期:從onStart()直到系統(tǒng)調(diào)用onStop()
前臺生命周期:從onResume()直到系統(tǒng)調(diào)用onPause()
屏幕旋轉(zhuǎn)時的Activity生命周期:
不設(shè)置Activity的android:configChanges時,切屏?xí)匦抡{(diào)用各個生命周期,切橫屏?xí)r會執(zhí)行一次,切豎屏?xí)r會執(zhí)行兩次;
設(shè)置Activity的android:configChanges="orientation"時,切屏還是會重新調(diào)用各個生命周期,切橫、豎屏?xí)r只會執(zhí)行一次;
設(shè)置Activity的android:configChanges="orientation|keyboardHidden"時,切屏不會重新調(diào)用各個生命周期,只會執(zhí)行onConfigurationChanged方法。
3、ListView優(yōu)化有哪幾種方式?
1)ListView中item的布局至關(guān)重要,必須盡可能的減少使用的控件,布局。
2)RelativeLayout是絕對的利器,通過它可以減少布局的層次。
3)同時要盡可能的復(fù)用控件,這樣可以減少ListView的內(nèi)存使用,減少滑動時GC次數(shù)。
4)ListView的背景色與cacheColorHint設(shè)置相同顏色,可以提高滑動時的渲染性能。
5)getView方法中不能做復(fù)雜的邏輯計算,特別是數(shù)據(jù)庫操作,否則會嚴(yán)重影響滑動時的性能。
4、解釋下Handler的運行機制?
Message,理解為線程間交流的信息
Handler,是Message的主要處理者,負(fù)責(zé)Message的發(fā)送和執(zhí)行處理
Message Queue,用來存放通過Handler發(fā)布的消息,按照先進先出執(zhí)行
Looper ,是每條線程里的Message Queue的管家
Handler一般在主線程中創(chuàng)建,子線程通過處理器對象的sendMessage發(fā)消息到
MessageQueue(消息隊列)里,主線程中已經(jīng)包含了一個Looper(輪循器),Looper是死循環(huán)的,會一直輪詢消息隊列,看是否有Message(消息) ,如果有,輪詢器會把消息對象傳給Handler(消息處理器),然后調(diào)用handlerMessage處理該消息,進而更新UI。
5、什么是ANR?如何避免ANR異常?
ANR:Application Not Responding。在Android中,活動管理器和窗口管理器這兩個系統(tǒng)服務(wù)負(fù)責(zé)監(jiān)視應(yīng)用程序的響應(yīng),當(dāng)用戶操作的在5s內(nèi)應(yīng)用程序沒能做出反應(yīng),BroadcastReceiver在10秒內(nèi)沒有執(zhí)行完畢,就會出現(xiàn)應(yīng)用程序無響應(yīng)對話框,就是ANR。
避免方法:Activity應(yīng)該在它的關(guān)鍵生命周期方法(如onCreate()和onResume())里盡可能少的去做創(chuàng)建操作。潛在的耗時操作,例如網(wǎng)絡(luò)或數(shù)據(jù)庫操作,或者高耗時的計算如改變位圖尺寸,應(yīng)該在子線程里(或者異步方式)來完成。主線程應(yīng)該為子線程提供一個Handler,以便完成時能夠提交給主線程。
6、Android中三種動畫,特點和區(qū)別是什么?
Android 中的動畫有幀動畫,補間動畫,屬性動畫。
幀動畫:一張張圖片不斷的切換,形成動畫效果,類似小時候的電影。很多應(yīng)用的loading是采用這種方式。
補間動畫:是對某個View進行一系列的動畫的操作,包括淡入淡出(Alpha),縮放(Scale),平移(Translate),旋轉(zhuǎn)(Rotate)四種模式。
屬性動畫:屬性動畫不再僅僅是一種視覺效果了,而是一種不斷地對值進行操作的機制,并將值賦到指定對象的指定屬性上,可以是任意對象的任意屬性。
7、注冊廣播有幾種方式,有何優(yōu)缺點?
第一種:在清單文件中聲明,添加
<receive android:name=".IncomingSMSReceiver " > <intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED") <intent-filter> <receiver>
第二種使用代碼進行注冊:
IntentFilter filter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED"); IncomingSMSReceiver receiver = new IncomgSMSReceiver(); registerReceiver(receiver.filter);
兩種注冊類型的區(qū)別是:
1)第一種不是常駐型廣播,也就是說廣播跟隨程序的生命周期。
2)第二種是常駐型,也就是說當(dāng)應(yīng)用程序關(guān)閉后,如果有信息廣播來,程序也會被系統(tǒng)調(diào)用自動運行。
關(guān)于“Android面試常問七道題是什么”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“Android面試常問七道題是什么”知識都有一定的了解,大家如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。