久久综合九色综合97婷婷-美女视频黄频a免费-精品日本一区二区三区在线观看-日韩中文无码有码免费视频-亚洲中文字幕无码专区-扒开双腿疯狂进出爽爽爽动态照片-国产乱理伦片在线观看夜-高清极品美女毛茸茸-欧美寡妇性猛交XXX-国产亚洲精品99在线播放-日韩美女毛片又爽又大毛片,99久久久无码国产精品9,国产成a人片在线观看视频下载,欧美疯狂xxxx吞精视频

有趣生活

當前位置:首頁>職場>android74道高級面試題(如果這些知識還不會)

android74道高級面試題(如果這些知識還不會)

發布時間:2024-01-24閱讀(12)

導讀作者:王三端activity作為android四大組件之一,地位就不用多說了吧,該組件看起來是比較簡單的,但是也涉及到很多知識點,要想全部理解并在合適的業務....

作者:王三端

activity作為android四大組件之一,地位就不用多說了吧,該組件看起來是比較簡單的,但是也涉及到很多知識點,要想全部理解并在合適的業務場景下使用,也是需要一定的技術沉淀,本文主要是對activity一些重要知識點進行總結整理,可能平時不一定用到,但是一定要有所了解。

當然這些知識點并沒有設計過多源碼部分,比如activity的啟動流程什么的,主要是零散的知識點,對于activity的啟動流程網上文章太多了,后面自己也準備重新梳理下,好記性不如爛筆頭,在不斷學習整理的過程中,一定會因為某個知識點而豁然開朗。

android74道高級面試題(如果這些知識還不會)(1)

一、生命周期

1.1 兩個頁面跳轉

從MainActivity跳轉到SecordActivity的生命周期,重點關注Main的onPause和onStop與Secord幾個關鍵生命周期的順序,以及從Secord返回時與Main的生命周期的交叉:

android74道高級面試題(如果這些知識還不會)(2)

可以發現Main頁面的onPause生命周期之后直接執行Secord的onCreate,onStart,onResume,所以onPause生命周期內不要執行耗時操作,以免影響新頁面的展示,造成卡頓感。

1.2 彈出Dialog

  • 單純的彈出Dialog是不會影響Activity的生命周期的;
  • 啟動dialog theme的Activity的時候,啟動的activity只會執行onPause方法,onStop不會執行,被啟動的Activity會正常走生命周期,back的時候,啟動的Activity會對應執行onResume方法;

android74道高級面試題(如果這些知識還不會)(3)

1.3 橫豎屏切換

  • AndroidManifest不配置configChanges時,橫豎屏切換,會銷毀重建Activity,生命周期會重新走一遍;
  • 當ActivityconfigChanges="orientation|screenSize"時,橫豎屏切換不會重新走Activity生命周期方法,只會執行onConfigurationChanged方法,如需要可以在此方法中進行相應業務處理;

如橫豎屏切換時需要對布局進行適配,可在res下新建layout-port、layout-land目錄,并提供相同的xml布局文件,橫豎屏切換時即可自動加載相應布局。(前提是未配置configChanges忽略橫豎屏影響,否則不會重新加載布局)

1.4 啟動模式對生命周期的影響

1、A(singleTask)啟動(startActivity)B(standard),再從B啟動A,生命周期如下:

A啟動B:A_onPause、B_onCreate、B_onStart、B_onResume、A_onStop

第二步:B_onPause、A_onNewintent、A_onRestart、A_onStart、A_onResume、B_onStop、B_onDestory

2、A(singleTask)啟動A,或者A(singleTop)啟動A

A_onPause、A_onNewIntent、A_Resume

3、singleInstance模式的activity

多次啟動A(singleInstance),只有第一次會創建一個單獨的任務棧(全局唯一),再次啟動會調用A_onPause、A_onNewIntent、A_Resume。

二、啟動模式

Activity的啟動模式一直是standard、singleTop、singleTask、singleInstance四種,Android 12新增了singleInstancePerTask啟動模式,在這里不一一介紹,僅介紹重要知識點。

2.1 singleTask

Activity是一個可以跨進程、跨應用的組件,當你在 A App里打開 B App的Activity的時候,這個Activity會直接被放進A的Task里,而對于B的Task,是沒有任何影響的。

從A應用啟動B應用,默認情況下啟動的B應用的Activity會進入A應用當前頁面所在的任務棧中,此時按home建,再次啟動B應用,會發現B應用并不會出現A啟動的頁面(前提是A應用啟動的不是B應用主activity,如果是必然一樣),而是如第一次啟動一般.

如果想要啟動B應用的時候出現被A應用啟動的頁面,需要設置B應用被啟動頁的launchmode為singleTask,此時從A應用的ActivityA頁面啟動B應用的頁面ActivityB(launchmode為singleTask),發現動畫切換方式是應用間切換,此時ActivityB和ActivityA分別處于各自的任務棧中,并沒有在一個task中,此時按Home鍵后,再次點擊啟動B應用,發現B應用停留在ActivityB頁面。

如果想要實現上述效果,除了設置launchmode之外,還可以通過設置allowTaskReparenting屬性達到同樣的效果,Activity 默認情況下只會歸屬于一個 Task,不會在多個Task之間跳來跳去,但你可以通過設置來改變這個邏輯,如果你不設置singleTask,而是設置allowTaskReparenting為true,此時從A應用的ActivityA頁面啟動B應用的頁面ActivityB(設置了allowTaskReparenting為true),ActivityB會進入ActivityA的任務棧,此時按Home鍵,點擊啟動B應用,會進入ActivityB頁面,也就是說ActivityB從ActivityA的任務棧移動到了自己的任務棧中,此時點擊返回,會依次退出ActivityB所在任務棧的各個頁面,直到B應用退出。

注意:allowTaskReparenting在不同Android版本上表現有所不同,Android9以下是生效的,Android9,10又是失效的,但Android11又修復好了,在使用時一定要好好測試,避免一些因版本差異產生的問題。

2.2 singleInstance

singleInstance具備singleTask模式的所有特性外,與它的區別就是,這種模式下的Activity會單獨占用一個Task棧,具有全局唯一性,即整個系統中就這么一個實例,由于棧內復用的特性,后續的請求均不會創建新的Activity實例,除非這個特殊的任務棧被銷毀了。以singleInstance模式啟動的Activity在整個系統中是單例的,如果在啟動這樣的Activity時,已經存在了一個實例,那么會把它所在的任務調度到前臺,重用這個實例。

2.3 singleInstancePerTask

釋義:singleInstancePerTask的作用和singleTask幾乎一模一樣,不過singleInstancePerTask不需要為啟動的Activity設置一個特殊的taskAffinity就可以創建新的task,換句話講就是設置singleInstancePerTask模式的activity可以存在于多個task任務棧中,并且在每個任務棧中是單例的。

多次啟動設置singleInstancePerTask模式的Activity并不會多次創建新的任務棧,而是如singleInstance模式一樣,把當前Activity所在的任務棧置于前臺展示,如果想每次以新的任務棧啟動需要設置FLAG_ACTIVITY_MULTIPLE_TASK和FLAG_ACTIVITY_NEW_DOCUMENT,使用方式如下:

intent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK | Intent.FLAG_ACTIVITY_NEW_DOCUMENT);

此時,每次啟動Activity就會單獨創建新的任務棧。

注意:測試需要在Android12的真機或者模擬器上,否則默認為Standard模式

三、taskAffinity

taskAffinity可以指定任務棧的名字,默認任務棧是應用的包名,前提是要和singleTask,singleInstance模式配合使用,standard,singleTop模式無效,當app存在多個任務棧時,如果taskAffinity相同,則在最近任務列表中只會出現處于前臺任務棧的頁面,后臺任務棧會“隱藏”在某處,如果taskAffinity不同,最近任務列表會出現多個任務頁面,點擊某個就會把該任務棧至于前臺。

四、清空任務棧

activity跳轉后設置FLAG_ACTIVITY_CLEAR_TASK即可清空任務棧,并不是新建一個任務棧,而是清空并把當前要啟動的activity置于棧底,使用場景比如:退出登錄跳轉到登錄頁面,可以以此情況activity任務棧。

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK);

注意:FLAG_ACTIVITY_CLEAR_TASK必須與FLAG_ACTIVITY_NEW_TASK一起使用.

五、Activity.FLAG

FLAG_ACTIVITY_NEW_TASK

FLAG_ACTIVITY_NEW_TASK并不像起名字一樣,每次都會創建新的task任務棧,而是有一套復雜的規則來判斷:

  • 通過activity類型的context啟動,如果要啟動的Activity的taskAffinity與當前Activity不一致,則會創建新的任務棧,并將要啟動的Activity置于棧底,taskAffinity一致的話,就會存放于當前activity所在的任務棧(注意啟動模式章節第三點taskAffinity的知識點);
  • taskAffinity一致的情況下,如果要啟動的activity已經存在,并且是棧根activity,那么將沒有任何反應(啟動不了要啟動的activity)或者把要啟動的activity所在的任務棧置于前臺;否則如果要啟動的activity不存在,將會在當前任務棧創建要啟動的activity實例,并入棧;
  • taskAffinity一致的情況下,如果要啟動的activity已經存在,但不是棧根activity,依然會重新創建activity示例,并入棧(前提是:要啟動的activity的launchMode為standard,意思就是是否會創建新實例會受到launchMode的影響);
  • 非activity的context啟動activity時(比如在service或者broadcast中啟動activity),在android7.0之前和9.0之后必須添加FLAG_ACTIVITY_NEW_TASK,否則會報錯(基于android-32的源碼,不同版本可能不同):

//以下代碼基于android 12public void startActivity(Intent intent, Bundle options) { warnIfCallingFromSystemProcess(); final int targetSdkVersion = getApplicationInfo().targetSdkVersion; //檢測FLAG_ACTIVITY_NEW_TASK if ((intent.getFlags() & Intent.FLAG_ACTIVITY_NEW_TASK) == 0 && (targetSdkVersion < Build.VERSION_CODES.N || targetSdkVersion >= Build.VERSION_CODES.P) && (options == null || ActivityOptions.fromBundle(options).getLaunchTaskId() == -1)) { //未設置FLAG_ACTIVITY_NEW_TASK,直接拋出異常 throw new AndroidRuntimeException( "Calling startActivity() from outside of an Activity " " context requires the FLAG_ACTIVITY_NEW_TASK flag." " Is this really what you want?"); } //正常啟動activity mMainThread.getInstrumentation().execStartActivity( getOuterContext(), mMainThread.getApplicationThread(), null, (Activity) null, intent, -1, options);}

注意:FLAG_ACTIVITY_NEW_TASK的設置效果受到taskAffinity以及其他一些配置的影響,實際使用過程中一定要進行充分測試,并且不同的android版本也會表現不同,極端場景下要仔細分析測試,選擇最優方案;

提示:通過adb shell dumpsys activity activities命令可以查看activity任務棧;

六、多進程

正常情況下,app運行在以包名為進程名的進程中,其實android四大組件支持多進程,通過manifest配置process屬性,可以指定與包名不同的進程名,即可運行在指定的進程中,從而開啟多進程,那么,開啟多進程有什么優缺點呢?

多進程下,可以分散內存占用,可以隔離進程,對于比較重的并且與其他模塊關聯不多的模塊可以放在單獨的進程中,從而分擔主進程的壓力,另外主進程和子進程不會相互影響,各自做各自的事,但開啟了多進程后,也會帶來一些麻煩事,比如會引起Application的多次創建,靜態成員失效,文件共享等問題。

所以是否選擇使用多進程要看實際需要,我們都知道app進程分配的內存是有限的,超過系統上限就會導致內存溢出,如果想要分配到更多的內存,多進程不失為一種解決方案,但是要注意規避或處理一些多進程引起的問題;

設置多進程的方式:

android:process=":childProcess" //實際上完整的進程名為:包名:childProcess,這種方式聲明的屬于私有進程。android:process="com.child.process" //完整的進程名即為聲明的名字:com.child.process,這種方式聲明的屬于全局進程。

七、excludeFromRecents

excludeFromRecents如果設置為true,那么設置的Activity將不會出現在最近任務列表中,如果這個Activity是整個Task的根Activity,整個Task將不會出現在最近任務列表中.

八、startActivityForResult被棄用

使用Activity Result Api代替,使用方式如下:

private val launcherActivity = registerForActivityResult( ActivityResultContracts.StartActivityForResult()) { Log.e("code","resultCode = " it.resultCode)}findViewById<Button>(R.id.btn_jump).setOnClickListener { launcherActivity.launch(Intent(this@MainActivity,SecordActivity::class.java))}//要跳轉的Activity設置回調數據:val resultIntent = Intent()resultIntent.putExtra("dataKey","data value")setResult(1001,resultIntent)finish()

九、Deep link

簡單理解,所謂Deep Link就是可以通過外部鏈接來啟動app或者到達app指定頁面的一想技術,比如可以通過點擊短信或者網頁中的鏈接來拉起app到指定頁面,以達到提供日活或者其他目的,一般流程是可以通過在manifest的activity標簽中配置固定的schema來實現這種效果,形如:

<intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE"/> <data android:scheme="jumptest" android:host="work" android:port="8801" android:path="/main" /></intent-filter>

然后在網頁中就可以通過如下方式來啟動當前activity:

<a href="jumptest://work:8801/main?data=123456">你好</a>

格式 <scheme>://<host>:<port>/<path>?<query>

被啟動的app可以通過如下方式拿到傳遞的參數以及schmea配置項:

val host = schemaIntent.data?.hostval path = schemaIntent.data?.pathval schema = schemaIntent.data?.schemeval query = schemaIntent.data?.queryLog.e("schema","host = $host, path = $path, schema = $schema, query = $query")

結果:

android74道高級面試題(如果這些知識還不會)(4)

注意:

1.intent-filter與Main主Activity搭配使用時,要單獨開啟一個intent-filter,否則匹配不到。 2.從android12開始,設置了intent-filter標簽后,activity的exported必須設置成true,這個要注意(android12之前,其實添加了intent-filter,系統也會默認設置exported為true)。

app link

App link是一種特殊的Deep link,它的作用就是可以使通過網站地址打開app的時候,不需要用戶選擇使用哪個應用來打開,換種說法就是,我可以設置默認打開次地址的應用,這樣一來,就可以直接引導到自己的app。

十、setResult和finish的順序關系

通過startActivityForResult啟動activity,通常會在被啟動的activity的合適時機調用setResult來回調數據給上一個頁面,然后當前頁面返回的時候就會回調onActivityResult,這里要注意setResult的調用時機,請一定要在activity的finish()方法之前調用,否則可能不會生效(不會回調onActivityResult)

原因如下:

private void finish(int finishTask) { if (mParent == null) { int resultCode; Intent resultData; //會在finish的時候把回調數據賦值 synchronized (this) { resultCode = mResultCode; resultData = mResultData; } ··· if (ActivityClient.getInstance().finishActivity(mToken, resultCode, resultData, finishTask)) { mFinished = true; } } else { mParent.finishFromChild(this); } ···}//setResult對mResultCode,mResultData賦值public final void setResult(int resultCode) { synchronized (this) { mResultCode = resultCode; mResultData = null; }}

由上述代碼可以看出,setResult必須在finish之前賦值,才能夠在finish的時候拿到需要callback的數據,以便在合適的時機回調onActivityResult;

十一、onSaveInstanceState()和onRestoreInstanceState()

activity在非正常情況被銷毀的時候(非正常情況:橫豎屏切換,系統配置發生變化,內存不足后臺activity被回收等),當重新回到該activity,系統會重新實例化該對象,如果沒有對頁面輸入的內容進行保存,就會存在內容丟失的情況,此時可以通過onSaveInstanceState來保存頁面數據,在onCreate或者onRestoreInstanceState中對數據進行恢復,形如:

override fun onSaveInstanceState(outState: Bundle) { outState.putString("SAVE_KEY","SAVE_DATA") outState.putString("SAVE_KEY","SAVE_DATA2") super.onSaveInstanceState(outState)}//需要判空,savedInstanceState不一定有值override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) if(null != savedInstanceState){ saveData = savedInstanceState.getString("SAVE_KEY") ?: "" saveData2 = savedInstanceState.getString("SAVE_KEY2") ?: "" } setContentView(R.layout.activity_main)}//或者在onRestoreInstanceState恢復數據,無需判空,回調此方法一定有值override fun onRestoreInstanceState(savedInstanceState: Bundle) { saveData = savedInstanceState.getString("SAVE_KEY") ?: "" saveData2 = savedInstanceState.getString("SAVE_KEY2") ?: "" super.onRestoreInstanceState(savedInstanceState)}

注意:請使用onSaveInstanceState(outState: Bundle)一個參數的方法,兩個參數的方法和Activity的persistableMode有關。

最后

這里也分享一些珍藏資源,從面試簡歷模板到大廠面經匯總,從大廠內部技術資料到互聯網高薪必讀書單,以及Android面試核心知識點(844頁)和Android面試題合集2022年最新版(354頁)等等,這些資料整理給大家,希望踩過的坑不要再踩,遭遇的技術瓶頸一次性消滅。

如果需要的話,可以順手幫我點贊評論一下,直接私信我【筆記】免費領取!

部分內容展示如下

android74道高級面試題(如果這些知識還不會)(5)

android74道高級面試題(如果這些知識還不會)(6)

01.Android必備底層技術

  • Java序列化:Serializable原理、Parcelable接口原理、Json、XML
  • 注解、泛型與反射:自定義注解、注解的使用、泛型擦除機制、泛型邊界、Java方法與Arm指令、Method反射源碼、invoke方法執行原理
  • 虛擬機:JVM垃圾回收器機制、JVM內存分配策略、Android虛擬機與JVM底層區別、虛擬機底層Odex本地指令緩存機制、虛擬機如何分別加載class與object、虛擬機類加載模型
  • 并發:Java線程本質講解、線程原理、線程通信、UnSafe類、線程池
  • 編譯時技術:OOP面向切面之AspectJ、字節碼手術刀JavaSSit實戰、字節碼插樁技術(ASM)實戰
  • 動態代理:動態代理實現原理、動態代理在虛擬機中運行時動態拼接Class字節碼分析、ProxyGenerator生成字節碼流程
  • 高級數據結構與算法:HashMap源碼、ArrayList源碼、排序算法
  • Java IO:Java IO體系、IO文件操作

android74道高級面試題(如果這些知識還不會)(7)

02.Framework

  • Binder:Linux內存基礎、Binder四層源碼分析、Binder機制、Binder進程通信原理
  • Handler:Loop消息泵機制、Message解析
  • Zygote:init進程與Zygote進程、Zygote啟動流程、Socket通信模式、APP啟動過程
  • AMS:ActivityThread源碼分析、AMS與ActivityThread通信原理、Activity啟動機制
  • PMS:PMS源碼、APK安裝過程分析、PMS對安裝包的解析原理
  • WMS:PhoneWindow實例化流程、DecorView創建過程、ViewRootImpl渲染機制

android74道高級面試題(如果這些知識還不會)(8)

03.Android常用組件

  • Activty:Activity管理棧與Activity的啟動模式、Activity生命周期源碼分析
  • Fragment:Fragment生命周期深入詳解、Fragment事務管理機制詳解、性能優化相關方案
  • Service:Service啟動模式分析、Service管理與通信方案、Service生命周期底層詳解

android74道高級面試題(如果這些知識還不會)(9)

04.高級UI

  • UI繪制原理:setContentView()方法下到底做了什么、AppCompatActivity與Activity的區別、UI測量、布局、繪制的底層執行流程
  • 插件換膚:LayoutInflater加載布局分析、Android資源的加載機制、Resource與AssetManager
  • 事件分發機制原理:事件執行U形鏈與L形鏈、事件攔截原理
  • 屬性動畫:VSYNC刷新機制、ObjectAnimator與ValueAnimator源碼講解、Android屬性動畫:插值器與估值器
  • RecycleView:布局管理器LayoutManager詳解、回收池設計思想、適配器模式原理
  • 高階貝塞爾曲線

android74道高級面試題(如果這些知識還不會)(10)

05.Jetpack

  • Lifecycle:Lifecycle源碼、Lifecycle高階應用
  • ViewModel:ViewModel源碼、ViewModel應用技巧
  • LiveData:LiveData源碼
  • Navigation:Navigation源碼
  • Room:Room源碼、Room LiveData監聽數據庫數據變更刷新頁面原理
  • WorkManager內核
  • Pagging原理
  • DataBinding:單向綁定、雙向綁定、如何與RecyclerView的配合使用、底層原理

android74道高級面試題(如果這些知識還不會)(11)

06.性能優化

  • 啟動優化:系統啟動原理、Trace工具分析啟動卡頓、類重排機制、資源文件重排機制
  • 內存優化
  • UI渲染優化:UI層級規范及對UI加載的影響、UI卡頓原因及修復、UI繪制、布局、測量原因以及處理方案
  • 卡頓優化:造成卡頓的原因分析、內存抖動與GC回收、回收算法
  • 耗電優化
  • 崩潰優化:項目崩潰異常捕獲、優雅的異常處理方案、如何避免異常彈框
  • 安全優化:APP加固實現(防反編譯,dex加固)、https防抓包機制(數據傳輸加載,客戶端服務器端雙向加密校驗)
  • 網絡優化:serializable原理、parcelable接口原理、http與https原理詳解、protbuffer網絡IO詳解、gzip壓縮方案
  • 大圖加載優化:Glide巨圖加載機制原理分析、大圖多級緩存實現方案
  • 多線程并發優化
  • 儲存優化:Android文件系統-sdcard與內存存儲、Shared Preference原理、MMAP內存映射
  • 安裝包優化:shrinkResources去除無用資源、合理設置多語言、webp實現圖片瘦身、合理配置armable-v7的so庫、Lint檢查工具實踐

android74道高級面試題(如果這些知識還不會)(12)

如果需要的話,可以順手幫我點贊評論一下,直接私信我【筆記】免費領取!

07.音視頻

  • C/C :數據類型、數組、內存布局、指針、函數、預處理器、結構體、共用體、容器、類型轉換、異常、文件流操作、線程
  • H.265/H.265:音視頻格式封裝原理、編碼原理、視頻流H264的組裝原理切片NAL單元、視頻流H264碼流分析、切片與宏快,運動矢量、信源編碼器、高頻濾波、幀間拆分與幀內預測、CTU,PU TU編碼結構、DSP芯片解碼流程、MediaPlayer與DSP芯片交互機制、投屏架構、MediaProjection與MeidiaCodec交互機制、H265碼流交換
  • MediaCodec:dsp芯片、編解碼器的生命周期、解碼器中輸入隊列與解析隊列設計思想、MediaCodec中平緩解碼解析、MediaExtractor 多路復用、MediaMuxer合成器、MediaFormat格式
  • 音視頻剪輯:視頻剪輯、音頻剪輯、音頻合成、音譜顯示、視頻倒放
  • 音視頻直播:硬編碼、軟編碼、native實現rtmp推流、攝像頭預覽幀編碼NV21轉YUV、視頻畫面封裝拼接Packet包、音頻流數據拼接Packet包、RtmpDump實時同步發送音視頻數據、MediaProjection、Medicodec編碼H264碼流、rtmp推流
  • OpenGL與音視頻解碼:OpenGL繪制流程、矩陣、Opencv詳解、人臉識別效果實現
  • OpenGL特效:CPU與GPU運行機制詳解、世界坐標,布局坐標,與FBO坐標系、圖像鏡像與旋轉處理、人臉定位與關鍵點定位、大眼效果、貼紙效果、美顏效果
  • FFmpeg萬能播放器:FFmpeg結構體、聲音播放原理、Surface的渲染、像素繪制原理與對齊機制、音視頻同步原理、視頻播放器整體架構
  • Webrtc音視頻通話:WebRtc服務端環境搭建與Webrtc編譯、1v1視頻通話實現方案、群聊視頻通話實現思路、多對多視頻會議實現、1V1音視頻通話實現

android74道高級面試題(如果這些知識還不會)(13)

08.開源框架原理

  • Okhttp
  • Retrofit
  • RxJava
  • Glide
  • Hilt
  • Dagger2
  • EventBus
  • 組件化、插件化、熱修復等

android74道高級面試題(如果這些知識還不會)(14)

09.Gradle

  • Groovy語法
  • Gradle Android插件配置
  • Gradle實踐等

android74道高級面試題(如果這些知識還不會)(15)

10.kotlin

  • Kotlin語法
  • 擴展使用
  • 進階使用
  • 實踐等

android74道高級面試題(如果這些知識還不會)(16)

11.Flutter

  • Dart語法
  • UI
  • 進階使用
  • 優化
  • 實踐等

android74道高級面試題(如果這些知識還不會)(17)

12.鴻蒙

  • Ability組件
  • 分布式任務
  • 事件總線
  • 鴻蒙線程
  • UI自定義控件等

android74道高級面試題(如果這些知識還不會)(18)

如果需要的話,可以順手幫我點贊評論一下,直接私信我【筆記】免費領取!

Android路漫漫,共勉!

android74道高級面試題(如果這些知識還不會)(19)

android74道高級面試題(如果這些知識還不會)(20)

TAGS標簽:  android74  高級  試題  如果  這些  android74道

Copyright ? 2024 有趣生活 All Rights Reserve吉ICP備19000289號-5 TXT地圖HTML地圖XML地圖