柚子快報(bào)邀請(qǐng)碼778899分享:Android基礎(chǔ)知識(shí)
柚子快報(bào)邀請(qǐng)碼778899分享:Android基礎(chǔ)知識(shí)
人不走空
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
???????個(gè)人主頁:人不走空??????
?系列專欄:算法專題
?詩(shī)詞歌賦:斯是陋室,惟吾德馨
目錄
???????個(gè)人主頁:人不走空??????
?系列專欄:算法專題
?詩(shī)詞歌賦:斯是陋室,惟吾德馨
問:講講Android四大組件
問:Activity的生命周期和Fragment的生命周期對(duì)比
問:Activity的啟動(dòng)模式有哪幾種,區(qū)別是什么,以及應(yīng)用場(chǎng)景?
問:橫豎屏切換時(shí)Activity的生命周期
問:如何退出啟動(dòng)多個(gè)Activity的Application
問:Activity、Application和Context的關(guān)系與區(qū)別
問:Service能否執(zhí)行耗時(shí)操作?
問:Service生命周期
問:描述一下BroadcastReceiver
問:請(qǐng)介紹一下ContentProvider
問:ContentProvider、ContentResolver和ContentObserver之間的關(guān)系
作者其他作品:
?
問:講講Android四大組件
答:Android四大組件有:Activity(活動(dòng))、Service(服務(wù))、ContentProvider(內(nèi)容提供者)、BroadcastReceiver(廣播) 1、Activity是所有Android應(yīng)用程序的門面,凡是在應(yīng)用中你看得到的東西,都是放在Activity中的。 2、Service比較低調(diào),它會(huì)一直在后臺(tái)默默地運(yùn)行,即使用戶退出了應(yīng)用,服務(wù)仍然是可以/可能繼續(xù)運(yùn)行。 3、ContentProvider內(nèi)容提供者為應(yīng)用程序之間共享數(shù)據(jù)提供了可能,比如共享通訊錄聯(lián)系人等 4、BroadcastReceiver廣播允許你的應(yīng)用中接收來自各處的廣播消息,比如電話、短信等,當(dāng)然你的應(yīng)用同樣也可以向外發(fā)出廣播消息。
問:Activity的生命周期和Fragment的生命周期對(duì)比
答:Activity的生命周期有:onCreate、 onStart、 onResume、 onPause 、 onStop、onDestory Fragment的生命周期除了和Activity生命周期相比,只有在前后兩個(gè)不同。在Fragment的created 狀態(tài)時(shí)的生命周期有:onAttach、onCreate、onCreateView、onActivityCreated。在destoryed狀態(tài)時(shí):onDestoryedView、onDestory、onDetach。中間生命周期狀態(tài)與Activity相同。
問:Activity的啟動(dòng)模式有哪幾種,區(qū)別是什么,以及應(yīng)用場(chǎng)景?
答:Activity的啟動(dòng)模式共有四種,分別為: 1、standard:Activity默認(rèn)的啟動(dòng)方式,每次啟動(dòng)都會(huì)往Activity棧中不斷添加新的Activity實(shí)例。最經(jīng)常使用的一種模式 2、singleTop:棧頂復(fù)用模式,當(dāng)啟動(dòng)一個(gè)Activity時(shí),如果Activity棧的棧頂不是這個(gè)Activity的實(shí)例,則創(chuàng)建新的實(shí)例加入棧中。主要應(yīng)用于自己打開自己,例如:電商APP中,商品詳情頁面下面會(huì)有推薦商品,點(diǎn)擊還是商品詳情頁面,此時(shí)使用singleTop 3、singleTask:棧內(nèi)復(fù)用模式,當(dāng)啟動(dòng)一個(gè)新的Activity時(shí),如果目標(biāo)Activity棧中不存在此Activity實(shí)例,則創(chuàng)建新的實(shí)例加入棧中。如果存在此Activity實(shí)例的話,將此實(shí)例上面的實(shí)例出棧,將自己置于棧頂并獲取焦點(diǎn)。主要用于應(yīng)用程序的主頁 4、singleInstance:當(dāng)啟動(dòng)一個(gè)新的Activity時(shí),都會(huì)新建一個(gè)任務(wù)棧,自己獨(dú)棧一個(gè)Activity棧,比較少用。最為常見的應(yīng)用場(chǎng)景:在做支付時(shí),調(diào)用支付寶微信支付的頁面應(yīng)該就屬于這種啟動(dòng)模式
問:橫豎屏切換時(shí)Activity的生命周期
答:分兩種情況 1、不設(shè)置Activity的android:configChanges時(shí),橫豎屏切換會(huì)重新調(diào)用各個(gè)生命周期默認(rèn)首先銷毀當(dāng)前activity,然后重新創(chuàng)建加載。 2、設(shè)置Activity的android:configChanges="orientation|keyboardHidden|screenSize"時(shí), 橫豎屏切換不會(huì)銷毀Activity,不會(huì)執(zhí)行各項(xiàng)生命周期,回調(diào)onConfigurationChanged方法。
問:如何退出啟動(dòng)多個(gè)Activity的Application
答: 1、BaseActivity中記錄每個(gè)啟動(dòng)的Activity,循環(huán)退出。 2、每個(gè)都注冊(cè)退出的廣播,利用廣播退出 3、遞歸退出等
問:Activity、Application和Context的關(guān)系與區(qū)別
答:Activity和Application都是Context的子類。Activity的生命周期比Application生命周期短。在使用的時(shí)候注意不要讓長(zhǎng)生命周期的對(duì)象對(duì)Activity引用,可能造成內(nèi)存泄漏。如單例類一定要使用Context時(shí),盡量使用application的Context。一個(gè)應(yīng)用間有1個(gè)Application的Context + N個(gè)的Activity的Context。
問:Service能否執(zhí)行耗時(shí)操作?
答:如果沒有指定Service運(yùn)行的進(jìn)程,則Service默認(rèn)運(yùn)行APP的主線程中,不可以執(zhí)行耗時(shí)操作。可以在IntentService中執(zhí)行耗時(shí)操作,執(zhí)行完畢IntentService自動(dòng)結(jié)束。還可以在manifest中指定Service執(zhí)行在其他進(jìn)程,則看其他進(jìn)程的影響。
問:Service生命周期
答:?jiǎn)?dòng)Service有兩種方式,一種startService 一種bindService 兩種生命周期有所不同。 startService的生命周期:onCreate、onStartCommand、onDestory,多次啟動(dòng),onCreate只會(huì)執(zhí)行一次。 bindService的生命周期:onCreate、onBind、onUnBind、onDestory,多次bind,onCreate只會(huì)執(zhí)行一次。
問:描述一下BroadcastReceiver
答:BroadcastReceiver即廣播,是Android系統(tǒng)的四大組件之一。 廣播有兩種:有序廣播和無序廣播 有序廣播:按照被接收者的優(yōu)先級(jí)順序,在被接收者中依次傳播。中間可以被攔截,可以傳遞數(shù)據(jù)。 無序廣播:完全異步,邏輯上可以被任何廣播接收者接收到。優(yōu)點(diǎn)是效率較高。缺點(diǎn)是一個(gè)接收者不能將處理結(jié)果傳遞給下一個(gè)接收者,并無法終止廣播intent 的傳播。 廣播是通過Android系統(tǒng)的Binder機(jī)制實(shí)現(xiàn)通信。
問:請(qǐng)介紹一下ContentProvider
答:ContentProvider是應(yīng)用程序間數(shù)據(jù)共享的接口。使用時(shí)定義一個(gè)類繼承ContentProvider,復(fù)寫query、insert、update、delete等方法。同時(shí)需要在manifest中注冊(cè),通過uri將數(shù)據(jù)共享出去。訪問者實(shí)現(xiàn)ContentResolver來訪問。
問:ContentProvider、ContentResolver和ContentObserver之間的關(guān)系
答:ContentProvider是四大組件之一,內(nèi)容提供者,用于對(duì)外提供數(shù)據(jù) ContentResolver 內(nèi)容解析者,用于獲取內(nèi)容提供者提供的數(shù)據(jù),ContentResolver.notifyChange(uri)發(fā)出消息 ContentObserver 內(nèi)容監(jiān)聽器,可以監(jiān)聽數(shù)據(jù)的改變狀態(tài),ContentResolver.registerContentObserver()監(jiān)聽消息。
作者其他作品:
【Java】Spring循環(huán)依賴:原因與解決方法
OpenAI Sora來了,視頻生成領(lǐng)域的GPT-4時(shí)代來了
[Java·算法·簡(jiǎn)單] LeetCode 14. 最長(zhǎng)公共前綴 詳細(xì)解讀
【Java】深入理解Java中的static關(guān)鍵字
[Java·算法·簡(jiǎn)單] LeetCode 28. 找出字a符串中第一個(gè)匹配項(xiàng)的下標(biāo) 詳細(xì)解讀
了解 Java 中的 AtomicInteger 類
算法題 — 整數(shù)轉(zhuǎn)二進(jìn)制,查找其中1的數(shù)量
深入理解MySQL事務(wù)特性:保證數(shù)據(jù)完整性與一致性
Java企業(yè)應(yīng)用軟件系統(tǒng)架構(gòu)演變史?
柚子快報(bào)邀請(qǐng)碼778899分享:Android基礎(chǔ)知識(shí)
相關(guān)閱讀
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。