U05_專高4第五單元
在 Jetpack Compose 中,導(dǎo)航的核心庫是什么?
androidx.navigation.compose.
androidx.compose.navigation
androidx.compose.router
androidx.navigation.jetpack
如何在 Compose 中設(shè)置一個基礎(chǔ)的導(dǎo)航控制器?
NavController.
NavHostController
NavHost
NavGraph
在 Compose 中,如何定義導(dǎo)航圖?
使用 NavHost 組件.
使用 NavGraph 組件
使用 NavHostController 組件
使用 NavComponent 組件
如何在 Compose 中創(chuàng)建一個導(dǎo)航圖并指定主屏幕?
使用 NavGraph 和 NavHostController 組合
使用 NavHost 和 NavController 組合.
使用 NavHostController 和 NavDestination 組合
使用 NavHost 和 NavGraph 組合
如何在 Compose 中設(shè)置導(dǎo)航圖的起始目的地?
使用 NavHost 的 startDestination 參數(shù).
使用 NavGraph 的 startDestination 參數(shù)
使用 NavController 的 setStartDestination 方法
使用 NavHost 的 initialRoute 參數(shù)
如何在 Compose 中實(shí)現(xiàn)頁面之間的導(dǎo)航?
使用 NavController.navigate() 方法.
使用 NavHost.navigateTo() 方法
使用 NavController.push() 方法
使用 NavHostController.push() 方法
如何在 Compose 中從一個目的地導(dǎo)航到另一個目的地時(shí)傳遞參數(shù)?
使用 NavHost 的 arguments 參數(shù)
使用 NavGraph 的 arguments 參數(shù)
在 NavHostController 中直接添加參數(shù)
在 NavController.navigate() 方法中添加參數(shù).
如何在 Compose 中定義一個接受參數(shù)的目的地?
使用 NavHost 的 composable 函數(shù)定義參數(shù)
使用 NavGraph 的 composable 函數(shù)定義參數(shù)
在 composable 函數(shù)中定義參數(shù).
在 NavHostController 中定義參數(shù)
如何從當(dāng)前頁面返回到上一個頁面?
使用 NavController.popBackStack() 方法
使用 NavHost.popBackStack() 方法
使用 NavGraph.popBackStack() 方法
使用 NavController.navigateUp() 方法.
如何在 Compose 中實(shí)現(xiàn)帶返回按鈕的導(dǎo)航?
使用 NavController 的 popBackStack() 方法
使用 NavHost 的 popBackStack() 方法
使用 NavGraph 的 backNavigation 參數(shù)
使用 NavHostController 的 backNavigation 參數(shù)
如何在Jetpack Compose中創(chuàng)建一個浮動的按鈕?
使用FloatingActionButton組件
使用Button組件和Modifier進(jìn)行浮動效果
使用Fab組件
使用ActionButton組件
在Compose中,Modifier.fillMaxWidth的作用是什么?
使組件的寬度填滿父容器的寬度
設(shè)置組件的最大寬度
使組件的寬度固定為最大值
設(shè)置組件的最小寬度
如何在Compose中實(shí)現(xiàn)組件之間的數(shù)據(jù)共享?
使用ViewModel
使用@State注解
使用@Composable函數(shù)
使用@Provider
MVI和MVC架構(gòu)的主要區(qū)別是什么?
數(shù)據(jù)流方向.
視圖更新頻率
組件數(shù)量
用戶操作響應(yīng)速度
MVI架構(gòu)適合用在哪些應(yīng)用場景?
簡單的靜態(tài)頁面
高復(fù)雜度的動態(tài)應(yīng)用.
輕量級的應(yīng)用
數(shù)據(jù)密集型應(yīng)用
MVI架構(gòu)與MVVM架構(gòu)的主要不同點(diǎn)是什么?
數(shù)據(jù)綁定方式
組件數(shù)量
數(shù)據(jù)流方向.
業(yè)務(wù)邏輯處理
如何在MVI中處理異步操作?
在View層處理
在Intent層處理
在Model層處理.
在Presenter層處理
在MVI中,數(shù)據(jù)流動的方向是?
View → Intent → Model → View.
View → Model → Intent → View
Model → View → Intent → Model
Intent → View → Model → Intent
MVI架構(gòu)中,如何處理視圖的狀態(tài)變化?
通過Intent
通過Model.
通過View
通過Presenter
在MVI中,如何確保數(shù)據(jù)一致性?
通過單向數(shù)據(jù)流.
通過雙向綁定
通過狀態(tài)持久化
通過緩存機(jī)制
假設(shè)我們正在開發(fā)一個Android應(yīng)用,該應(yīng)用有一個用戶列表頁面。在這個頁面中,我們需要展示用戶的姓名、頭像等信息,并提供一個下拉刷新功能來更新用戶列表。我們可以使用MVI框架來實(shí)現(xiàn)這個頁面:
State:定義一個包含用戶列表和加載狀態(tài)(如加載中、加載完成、加載失敗)的State類。Intent:定義一個包含下拉刷新意圖的Intent類。
ViewModel接收來自View的Intent(如下拉刷新),并根據(jù)當(dāng)前的狀態(tài)(如用戶列表是否為空)來執(zhí)行相應(yīng)的操作(如發(fā)起網(wǎng)絡(luò)請求獲取新的用戶列表)
ViewModel將網(wǎng)絡(luò)請求的結(jié)果(可能是用戶列表或錯誤信息)作為新的狀態(tài)返回給View。
View(使用Jetpack Compose構(gòu)建)根據(jù)ViewModel提供的狀態(tài)來渲染UI。如果狀態(tài)表示正在加載,則顯示加載指示器;如果狀態(tài)包含用戶列表,則顯示用戶列表;如果狀態(tài)表示加載失敗,則顯示錯誤提示。
哪些方法可以用來獲取當(dāng)前的導(dǎo)航堆棧信息?
getCurrentDestination
getNavController
getBackStackEntry()
getBackStack()
Project和Task編譯過程分為哪三個階段:
初始化階段:創(chuàng)建 Project 對象,如果有多個build.gradle,也會創(chuàng)建多個project
配置階段:在這個階段,會執(zhí)行所有的編譯腳本,同時(shí)還會創(chuàng)建project的所有的task,為后一個階段做準(zhǔn)備
clean:移除所有的編譯輸出文件,比如apk
執(zhí)行階段:在這個階段,gradle 會根據(jù)傳入的參數(shù)決定如何執(zhí)行這些task,真正action的執(zhí)行代碼就在這里
Android Gradle插件的分類其實(shí)是根據(jù)Android工程的屬性分類的,在Android中有三類工程
一類是Library庫工程,它可以生成AAR包給其他的App工程公用,就和我們的Jar一樣,但是它包含了Android的資源等信息,是一個特殊的Jar包;
一類是App應(yīng)用工程,它可以生成一個可運(yùn)行的APK應(yīng)用;
最后一類是Test測試工程,用于對App工程或者Library庫工程進(jìn)行單元測試。
如果是第三方的插件,還要配置他們的依賴classpath。
為什么需要路由模塊
每個注冊了Scheme的Activity都可以直接打開,有安全風(fēng)險(xiǎn)
AndroidMainfest集中式管理比較臃腫
無法動態(tài)修改路由,如果頁面出錯,無法動態(tài)降級
無法動態(tài)攔截跳轉(zhuǎn),譬如未登錄的情況下,打開登錄頁面,登錄成功后接著打開剛才想打開的頁面
下列哪些組件可以用來實(shí)現(xiàn) Jetpack Compose 中的導(dǎo)航?
設(shè)置初始目的地
NavHost
NavController
composable
以下哪些操作符可以在 Flow 中用于流的調(diào)度和線程管理?
flowOn。
withContext。
dispatch
context
MVI框架與Jetpack Compose的結(jié)合使用有何優(yōu)勢?
Jetpack Compose是Android開發(fā)中的一個現(xiàn)代UI工具包,它允許開發(fā)人員使用聲明式編程范式來構(gòu)建UI
更好的響應(yīng)式編程體驗(yàn):Jetpack Compose本身就是基于響應(yīng)式編程原理構(gòu)建的,它利用Kotlin的協(xié)程和Flow等特性來管理UI的狀態(tài)。將MVI框架與Compose結(jié)合使用,可以更加自然地實(shí)現(xiàn)單向數(shù)據(jù)流和響應(yīng)式UI更新。
簡化的UI代碼:在Compose中,UI是通過組合不同的可組合項(xiàng)(Composables)來構(gòu)建的。將MVI框架中的State和Intent作為可組合項(xiàng)的屬性或參數(shù)傳遞,可以使UI代碼更加簡潔和模塊化。
提高開發(fā)效率:Compose提供了豐富的UI組件和布局工具,使得開發(fā)人員可以更加快速地構(gòu)建出高質(zhì)量的UI界面。同時(shí),MVI框架的清晰架構(gòu)和單向數(shù)據(jù)流也有助于提高開發(fā)效率和維護(hù)性。
在 Jetpack Compose 的導(dǎo)航中,navigate 方法的用途是什么?
切換到指定的導(dǎo)航目的地。
設(shè)置當(dāng)前目的地的參數(shù)
回到上一個目的地
向目的地傳遞參數(shù)。
哪些是 NavController 的常用方法
navigate()
popBackStack()
getCurrentBackStack
setGraph()
Groovy是一種基于JVM(Java虛擬機(jī))的敏捷開發(fā)語言,它結(jié)合了Python、Ruby和Smalltalk的許多強(qiáng)大的特性,Groovy 代碼能夠與 Java 代碼很好地結(jié)合,也能用于擴(kuò)展現(xiàn)有代碼。由于其運(yùn)行在 JVM 上的特性,Groovy也可以使用其他非Java語言編寫的庫
A、正確
B、錯誤
NavController 的 popBackStack 方法可以用來移除棧頂?shù)哪康牡亍?/legend>
A、正確
B、錯誤
在 Jetpack Compose 中,NavHost 是必需的組件,用于所有的導(dǎo)航操作
A、正確
B、錯誤
NavHost 不支持動態(tài)添加導(dǎo)航目的地。
A、正確
B、錯誤
我們實(shí)際開發(fā)中頁面直接跳轉(zhuǎn)可能不僅僅 從A跳轉(zhuǎn)到B那么簡單,比如我從A頁面跳轉(zhuǎn)到B頁面需要判斷用戶是否登錄了,如果沒有登錄就跳轉(zhuǎn)到登錄頁面.那么此時(shí)路由的攔截就發(fā)揮作用了
A、正確
B、錯誤
navigate 方法可以用來跳轉(zhuǎn)到指定的目的地,但不能攜帶參數(shù)。
A、正確
B、錯誤
NavController 是負(fù)責(zé)管理界面導(dǎo)航的組件,它可以在多個 NavHost 實(shí)例之間共享。
A、正確
B、錯誤
在 Jetpack Compose 中,NavHost 組件用于定義導(dǎo)航圖
A、正確
B、錯誤
Gradle插件跟 Android SDK BuildTool有關(guān)聯(lián),因?yàn)樗€承接著AndroidStudio里的編譯相關(guān)的功能,這也是我們要在項(xiàng)目的 local.properties 文件里寫明Android SDK路徑、在build.gradle 里注明 buildToolsVersion 的原因
A、正確
B、錯誤
NavHost 組件用于定義導(dǎo)航圖,并且將導(dǎo)航的各個目的地(Composables)與導(dǎo)航動作(NavController)關(guān)聯(lián)
A、正確
B、錯誤
關(guān)閉
更多問卷
復(fù)制此問卷