日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > Android >内容正文

Android

Android面试题——高级开发面试题一

發(fā)布時(shí)間:2023/12/29 Android 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android面试题——高级开发面试题一 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一 面試題概述

  • 請(qǐng)簡(jiǎn)單的分析一下Android系統(tǒng)啟動(dòng)流程的原理?
  • App啟動(dòng)狀態(tài)有哪幾種,各自的啟動(dòng)流程是怎么樣的?
  • 當(dāng)項(xiàng)目中遇到黑白屏問(wèn)題,你有什么好的解決方案?
  • 如何查看方法內(nèi)的耗時(shí)時(shí)間與方法分析?
  • 介紹一下AMS加載Applicaton流程?
  • 啟動(dòng)過(guò)程中有那幾個(gè)問(wèn)題需要處理?
  • WMS管理UI的流程對(duì)啟動(dòng)優(yōu)化的意義什么?
  • 二 面試題解答

    2.1 請(qǐng)簡(jiǎn)單的分析一下Android系統(tǒng)啟動(dòng)流程的原理?

    過(guò)程簡(jiǎn)化分析:

    • BootLoader:接通電源后,Boot ROM加載BootLoader到RAM
    • Linux kernel:Linux內(nèi)核負(fù)責(zé)初始化各種軟硬件環(huán)境,加載驅(qū)動(dòng)程序,掛載根文件系統(tǒng)等
    • init進(jìn)程:在init進(jìn)程中,掛載虛擬文件系統(tǒng)、啟動(dòng)property服務(wù)、當(dāng)然更重要的是包括了啟動(dòng)的各種系統(tǒng)服務(wù):serviceManager、adbd、mediasever、zygote、bootanmation等。
    • zygote進(jìn)程:zygote進(jìn)程是Android系統(tǒng)最重要的進(jìn)程之一。后續(xù)Android中的應(yīng)用進(jìn)程都是由zygote進(jìn)程fork出來(lái)的。因此,zygote是Android系統(tǒng)所有應(yīng)用進(jìn)程的父進(jìn)程
    • systemServer進(jìn)程:SystemServer進(jìn)程,被稱為系統(tǒng)服務(wù)進(jìn)程,屬于Android framework層的源碼實(shí)現(xiàn),通過(guò)android studio打開(kāi)SystemServer.java,能夠看到其中聲明了大量的android的系統(tǒng)服務(wù)
    • launcher的啟動(dòng):就是laucher程序的啟動(dòng)的入口函數(shù)
    • BootAnimation退出:Launcher啟動(dòng)完成之后,開(kāi)機(jī)動(dòng)畫會(huì)進(jìn)行出,這樣給用戶的體驗(yàn)就是開(kāi)機(jī)后,就直接進(jìn)入到桌面了

    啟動(dòng)架構(gòu)圖:

    2.2 App啟動(dòng)狀態(tài)有哪幾種,各自的啟動(dòng)流程是怎么樣的?

    APP啟動(dòng)狀態(tài)

    • 冷啟動(dòng):App進(jìn)程創(chuàng)建
    • 熱啟動(dòng):Activity已創(chuàng)建,從后臺(tái)到前臺(tái)
    • 溫啟動(dòng):App進(jìn)程存在,但Activity結(jié)束

    各自啟動(dòng)流程

    冷啟動(dòng)

    系統(tǒng)不存在App進(jìn)程(APP首次啟動(dòng)或APP被完全殺死)時(shí)啟動(dòng)APP,此時(shí),APP的啟動(dòng)將經(jīng)歷兩個(gè)階段:

    第一階段:

    • 加載并啟動(dòng)app;
    • app啟動(dòng)后,第一時(shí)間為app顯示一個(gè)空白的window;
    • 創(chuàng)建app進(jìn)程

    第二階段:

    • 系統(tǒng)一旦創(chuàng)建了app進(jìn)程,app進(jìn)程就要負(fù)責(zé)做以下的任務(wù):

    創(chuàng)建app對(duì)象

    • 啟動(dòng)主進(jìn)程ActivityThread;
    • 創(chuàng)建MainActivity;
    • 渲染視圖;
    • 執(zhí)行onLayout;
    • 執(zhí)行onDraw
    • 完成第一次繪制后,把mainActivity替換已經(jīng)展示的BackgroundWindow,即空白window。

    熱啟動(dòng)

    • 當(dāng)我們按了Home鍵或其它情況app被切換到后臺(tái),再次啟動(dòng)app的過(guò)程。
    • 熱啟動(dòng)時(shí),系統(tǒng)將activity帶回前臺(tái)。如果應(yīng)用程序的所有activity存在內(nèi)存中,則應(yīng)用程序可以避免重復(fù)對(duì)象初始化、渲染、繪制操作
    • 如果由于內(nèi)存不足導(dǎo)致對(duì)象被回收,則需要在熱啟動(dòng)時(shí)重建對(duì)象,此時(shí)與冷啟動(dòng)時(shí)將界面顯示到手機(jī)屏幕上一樣。

    溫啟動(dòng)

    溫啟動(dòng)包含了冷啟動(dòng)的一些操作,由于app進(jìn)程依然在,溫啟動(dòng)只執(zhí)行冷啟動(dòng)的第二階段,這代表著它比熱啟動(dòng)有更多的開(kāi)銷。

    溫啟動(dòng)有很多場(chǎng)景,例如:

    • 用戶按連續(xù)按返回退出了app,然后重新啟動(dòng)app;
    • 由于系統(tǒng)收回了app的內(nèi)存,然后重新啟動(dòng)app。

    2.3 當(dāng)項(xiàng)目中遇到黑白屏問(wèn)題,你有什么好的解決方案?

    為什么會(huì)有黑白屏

    在桌面點(diǎn)擊應(yīng)用圖標(biāo)后,在app進(jìn)程沒(méi)有創(chuàng)建的情況下,需要時(shí)間創(chuàng)建app進(jìn)程,初始化資源,以及啟動(dòng)首頁(yè)Activity的(這里討論的首頁(yè)是指AndroidManifest里面標(biāo)志的啟動(dòng)頁(yè)),這就意味點(diǎn)擊圖標(biāo)不能馬上看到啟動(dòng)頁(yè)。為了不讓用戶有卡頓的感覺(jué),谷歌有了Preview Window,在啟動(dòng)頁(yè)沒(méi)有繪制完成時(shí),會(huì)先初始化一個(gè)Window,我們通常看到的黑屏或白屏,就是這個(gè)預(yù)覽窗口。

    怎么知道是黑屏還是白屏?

    查看這個(gè)AppTheme,找到name="android:windowBackground"這個(gè)屬性,查看屬性下的內(nèi)容,就能知道是黑屏還是白屏,這個(gè)屬性就是設(shè)置預(yù)覽窗口的背景。

    如何解決黑白屏

  • theme下面的android:windowIsTranslucent屬性
  • 啟動(dòng)activity的theme設(shè)置啟動(dòng)圖片
  • 2.4 如何查看方法內(nèi)的耗時(shí)時(shí)間與方法分析?

    借助于Android自帶的分析工具:

    • Traceview
    • systrace

    2.5 介紹一下AMS加載Applicaton流程?

    AMS: ActivityManagerService

    AMS是Android中最核心的服務(wù),主要負(fù)責(zé)系統(tǒng)中四大組件的啟動(dòng)、切換、調(diào)度及應(yīng)用進(jìn)程的管理和調(diào)度等工作,其職責(zé)與操作系統(tǒng)中的進(jìn)程管理和調(diào)度模塊相類似,因此它在Android中非常重要。

    ActivityManagerService啟動(dòng)

    • 創(chuàng)建AMS對(duì)象
    • 調(diào)用ams.setSystemProcess
    • 調(diào)用ams.installSystemProviders
    • 調(diào)用ams.systemReady

    2.6 啟動(dòng)過(guò)程中有那幾個(gè)問(wèn)題需要處理?

    2.7 WMS管理UI的流程對(duì)啟動(dòng)優(yōu)化的意義什么?

    WMS窗口管理

    三 參考

    • CSDN—Android系統(tǒng)啟動(dòng)流程分析
    • CSDN—App三種啟動(dòng)場(chǎng)景:冷啟動(dòng)、熱啟動(dòng)、溫啟動(dòng)
    • 簡(jiǎn)書—啟動(dòng)速度與執(zhí)行效率優(yōu)化項(xiàng)目實(shí)戰(zhàn)(二):啟動(dòng)黑白屏解決
    • 微信公眾號(hào)—讓你的Android應(yīng)用快速定位耗時(shí)方法
    • 簡(jiǎn)書—詳解AMS啟動(dòng)流程
    • 簡(jiǎn)書—Android之AMS介紹
    • 知乎—Framework之簡(jiǎn)單上手AMS啟動(dòng)流程
    • 簡(jiǎn)書—Android App啟動(dòng)優(yōu)化
    • Android 的窗口管理系統(tǒng) (View, Canvas, WindowManager)
    • 簡(jiǎn)書—Android WMS窗口管理
    • 簡(jiǎn)書—Android WMS窗口管理(二)
    • 簡(jiǎn)書—Android WMS(一)-窗口管理

    總結(jié)

    以上是生活随笔為你收集整理的Android面试题——高级开发面试题一的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。