安卓應用開發(fā)(中級)-課后練習答案_第1頁
安卓應用開發(fā)(中級)-課后練習答案_第2頁
安卓應用開發(fā)(中級)-課后練習答案_第3頁
安卓應用開發(fā)(中級)-課后練習答案_第4頁
安卓應用開發(fā)(中級)-課后練習答案_第5頁
已閱讀5頁,還剩22頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

項目1一、填空題1.在Kotlin中,對于以下表達式,當a=2時,s的值是a<=2。vals=if(a>2)"a>2"else"a<=2"2.在Kotlin中,表達式6/5的值是1,6%5的值是1,6.0/5的值是1.0。3.在Kotlin中,valx:Int=15;valy:Int=6;valc=(x/y);c的值是2。4.在Kotlin中,x能同時被m和n整除的表達式為if(x%m==0&&x%n==0)。5.在Kotlin中,x能被m或n整除的表達式為if(x%m==0||x%n==0)。6.在Kotlin中,vali=10;vals="i=$i";s的值為i=10。7.在Kotlin中,函數(shù)的可變長參數(shù)可以用vararg關(guān)鍵字進行標識。8.在Kotlin中,表達式for(iin1..4step2)print(i)輸出的結(jié)果是13。9.在Kotlin中,通過在類名前添加annotation來聲明注解。10.Kotlin中的四種元注解分別是:@Target、@Retention、@Repeatable、@MustBeDocumented。二、判斷題1.Kotlin中有8大基本數(shù)據(jù)類型。(錯)2.Java代碼和kotlin代碼可以互相轉(zhuǎn)換。(對)3.在Kotlin中定義常量用var。(錯)4.在Kotlin中,沒有switch關(guān)鍵字。(對)5.Kotlin類可以包含:構(gòu)造函數(shù)和初始化代碼塊、函數(shù)、屬性、內(nèi)部類、對象聲明。(對)6.Kotlin的編譯器支持自動類型判斷,即聲明時可以不指定類型,由編譯器判斷。(對)7.在Kotlin中,變量與常量在定義的時候可以不用賦初始值,但是在使用前一定要初始化。(對)8.Kotlin中的協(xié)程(Coroutine)是運行在單線程中的并發(fā)程序。(對)三、簡答題1.在Kotlin中,請寫出if、if-else、when三種分支結(jié)構(gòu)的語法格式。(1)if(條件表達式成立){}(2)if(條件表達式成立){}else{}(3)when(變量){值1->表達式1值2->表達式2~......else->表達式3}在Kotlin中,請寫出while、do-while、for三種循環(huán)結(jié)構(gòu)的語法格式。(1)while(表達式成立){}(2)do{}while(表達式成立)(3)for(表達式1;表達式2;表達式3){}協(xié)程與傳統(tǒng)線程相比,有什么優(yōu)點?(1)減少了線程切換的成本。Java中的線程,不管是創(chuàng)建還是切換,都需要較高的成本。子程序切換不是線程切換,而是由程序自身控制,因此,沒有線程切換的開銷,和多線程比,線程數(shù)量越多,協(xié)程的性能優(yōu)勢就越明顯。這也就是...(2)協(xié)程的第二大優(yōu)勢就是,不需要多線程的鎖機制,因為只有一個線程,也不存在同時寫變量沖突,在協(xié)程中控制共享資源不加鎖,只需要判斷狀態(tài)。(3)協(xié)程更輕量級。創(chuàng)建一個線程棧大概需要1M左右,而協(xié)程棧大概只需要幾K或者幾十K。四、編程題1.用Kotlin編程輸出下列數(shù)據(jù)序列的最大值及其下標:38,-9,12,29,-8,15,76,3。funmain(args:Array<String>){varlist=arrayOf(-9,38,12,29,-8,15,76,3);varmax=list[0]varindexTmp=0;for(indexinlist.indices){if(max<list[index]){max=list[index]indexTmp=index}}println(max)println(indexTmp)}2.用Kotlin定義一個矩形類,提供長、寬屬性,提供計算面積和周長的方法。classRectange{varw=0.0varh=0.0constructor(){}constructor(w:Double,h:Double){this.w=wthis.h=h}funcalS():Double{returnw*h}funcalL():Double{return2*(w+h)}}3.對于上題中的矩形類,寫出通過反射技術(shù)獲取其對象的成員變量和成員方法的代碼。funmain(){//獲取對應的KClassvarclass1=Class.forName("Rectange").kotlin//創(chuàng)建Rectang對象varobj1=class1.createInstance()//獲取Rectange類的字段集合varpropertys=class1.declaredMemberProperties//輸出obj1對象中屬性名稱為name的字段的值propertys.forEach{when(){"w"->{println("w="+it.getter.call(obj1))}"h"->{println("h="+it.getter.call(obj1))}}}//獲取Rectange類的方法集合varmethods=class1.declaredFunctions//迭代遍歷每一個方法,并聽過對象obj1調(diào)用methods.forEach{when(){"calS"->{it.call(obj1)}"calL"->{it.call(obj1)}}}}項目2一、單選題1.設(shè)置線性布局的方向使用哪個屬性?(A)A、android:orientationB、android:gravityC、android:layout_gravityD、android:layout_width2.若將線性布局設(shè)為從左到右排列,android:orientation的值應該是(B)。A、verticalB、horizontalC、centerD、left3.上圖線性布局中,若要使三個文本框在水平方向上的寬度各占1/3,如下圖所示,應該設(shè)置哪些屬性?(C)A、設(shè)置三個控件的寬度為0B、設(shè)置三個控件的寬度為具體的像素值C、設(shè)置三個控件的寬度為0,并且設(shè)置它們的權(quán)重為1D、設(shè)置三個控件的權(quán)重為14.在相對布局中,如何設(shè)置某控件位于父控件的水平居中位置(C)A、android:layout_centerVertical="false"B、android:layout_centerHorizontal="false"C、android:layout_centerHorizontal="true"D、android:layout_centerVertical="true" 5.如何設(shè)置某控件與控件A(控件A的id是“myId”)的左邊對齊?(A)A、android:layout_alignLeft="@id/myId"B、android:layout_alignLeft="@+id/myId"C、android:layout_alignLeft="id/myId"D、android:layout_alignLeft="myId"二、填空題1.在android中,可視化控件通常可以分為兩類,分別是View和ViewGroup。2.設(shè)置輸入文本提示信息的屬性是hint,請?zhí)顚憣傩悦?.為了實現(xiàn)與單選按鈕的交互,而為單選按鈕實例添加監(jiān)聽器的方法名是setOnCheckedChangeListener。4.checked屬性用來設(shè)置默認情況下復選按鈕是否被選中。5.ImageView的scaleType屬性用來設(shè)置圖片縮放類型。三、簡答題1.請簡述RecyclerView的基本使用步驟。答:RecyclerView的基本使用步驟如下:(1)找到RecyclerViewRecyclerViewmRecyclerView=findView(R.id.id_recyclerview);(2)為RecyclerView設(shè)置布局管理器mRecyclerView.setLayoutManager(layout);(3)為RecyclerView設(shè)置數(shù)據(jù)適配器mRecyclerView.setAdapter(adapter)2.請簡述實現(xiàn)一個自定義的RecyclerView.Adapter需要復寫的3個方法的作用。答:需要復寫的3個方法的作用如下:(1)onCreateViewHolder()方法:該方法用來創(chuàng)建ViewHolder的實例,加載Item布局。(2)onBindViewHolder()方法:該方法用來為ViewHolder綁定數(shù)據(jù),即對每個item進行賦值操作。(3)getItemCount()方法:該方法用來獲取item的數(shù)量。四、編程題1.編寫一個用來展示水果信息的程序,要求使用RecyclerView。2.設(shè)計一個畢業(yè)生信息錄入界面,要求盡可能地使用各種合適的控件。項目3一、單選題1.以IO流形式把數(shù)據(jù)存入手機內(nèi)存或者SD卡屬于以下哪種存儲方式?(A)A、文件存儲B、SharedPreferences存儲C、SQLite數(shù)據(jù)庫存儲D、ContentProvider存儲2.讀取文件內(nèi)容時使用(A)。A、輸入流FileInputStreamB、輸出流FileOutputStreamC、A和B都可以D、A和B都不可以3.存儲數(shù)據(jù)到文件中時,MODE_PRIVATE的特點是(A)。A、寫入的內(nèi)容會覆蓋原文件的內(nèi)容。B、檢查文件是否存在,存在就往文件末尾追加內(nèi)容,否則就創(chuàng)建新文件。C、以上兩項都是D、以上兩項都不是4.往SQLite數(shù)據(jù)中添加記錄的方法是(A)。A、insert()B、deleteC、updateD、query5.修改SQLite數(shù)據(jù)庫中的記錄的方法是(C)。A、insert()B、deleteC、updateD、query6.在SQLite數(shù)據(jù)庫中查找記錄的方法是(D)。A、insert()B、deleteC、updateD、query7.下列方法中,(B)方法是sharedPreferences獲取其編輯器(Editor對象)的方法。A、getEdit()B、edit()C、setEdit()D、getAll()二、填空題1.SQLiteDatabase類封裝了一系列SQLite數(shù)據(jù)庫操作的API,可以對數(shù)據(jù)進行增刪改查操作。請?zhí)顚戭惷?.在SQLite數(shù)據(jù)庫查詢過程中,在Cursor的內(nèi)部封裝了一個整數(shù)計數(shù)器,代表當前可以訪問的行號。3.saveData方法用來保存數(shù)據(jù)到SharedPreferences,readData方法用來讀取保存的數(shù)據(jù),請完善程序。privatevoidsaveData(){Stringname=etName1.getText().toString();//獲取用戶輸入的賬號Stringpsw=etPsw1.getText().toString();//獲取用戶輸入的密碼SharedPreferencessp=getSharedPreferences("myfile",MODE_PRIVATE);SharedPreferences.Editoreditor=;//得到編輯器;//以賬號為key,以密碼為value保存數(shù)據(jù);}privatevoidreadData(){Stringname=etName1.getText().toString();//獲取用戶輸入的賬號SharedPreferencessp=getSharedPreferences(,MODE_PRIVATE);StringstrPsw=;//根據(jù)賬號取出密碼}答:第一空:sp.edit()第二空:editor.putString(name,psw);第三空:mit();第四空:"myfile"第五空:sp.getString(name,"")三、編程題1.設(shè)計一個簡易記事本,能將用戶輸入的文本內(nèi)容保存到存儲器中的txt文件中,幫能把txt文件的內(nèi)容讀取加載出來。2.設(shè)計一個水果信息庫,能將水果信息保存在SQLite數(shù)據(jù)庫中,并能將已經(jīng)保存在數(shù)據(jù)庫中的所有數(shù)據(jù)在界面列表中顯示出來。項目4一、單選題1.(A)是指客戶端發(fā)送請求后,處于阻塞狀態(tài),必須要等服務端返回信息后客戶端才能進行后續(xù)的操作。A、同步通信B、異步通信C、A和B都是D、A和B都不是2.(B)一般通過多線程技術(shù)和回調(diào)函數(shù)實現(xiàn)。A、同步通信B、異步通信C、A和B都是D、A和B都不是3.下面的說法正確的是(D)。A、WebView內(nèi)部實現(xiàn)是采用渲染引擎來展示view的內(nèi)容。B、WebView可單獨使用。C、WebView可以聯(lián)合其他工具類一起使用。D、以上說法都正確。4.關(guān)于HttpURLConnection訪問網(wǎng)絡(luò)的基本用法,描述錯誤的是(C)。A、HttpURLConnection對象需要設(shè)置請求網(wǎng)絡(luò)的方式B、HttpURLConnection對象需要設(shè)置超時時間C、需要通過new關(guān)鍵字來創(chuàng)建HttpURLConnection對象D、訪問網(wǎng)絡(luò)完畢需要關(guān)閉HTTP鏈接二、填空題1.Socket在基于TCP協(xié)議進行通信時,一般有三種方式種模式,分別是一對一、一對多和多對多。2.兩個進程通過網(wǎng)絡(luò)進行通信,必須知道對方的IP地址和port端口號。3.在包中提供了名為URL的類,通過該類可以從互聯(lián)網(wǎng)獲取網(wǎng)絡(luò)資源。4.客戶端請求web服務器一般有兩種常見的方式,分別是get和post。5.WebView可以展示網(wǎng)頁信息,可以理解為android中的一個微型瀏覽器。三、判斷題1.HttpURLConnection用于發(fā)送HTTP請求和獲取HTTP響應。(對)2.Android中要訪問網(wǎng)絡(luò),必須在AndroidManifest.xml中注冊網(wǎng)絡(luò)訪問權(quán)限。(對)3.GET請求如果要傳遞參數(shù)給服務器,不能在地址后面加上參數(shù)。(錯)三、簡答題1.請簡述你對Socket一對一通信的理解。答:一對一通信是一臺機器充當服務器,另外一臺機器充當客戶機,服務器首先處于監(jiān)聽狀態(tài),等待客戶機的連接。在連接完成以后,可以通過io操作在服務器和客戶端之間相互發(fā)送信息。2.請簡述使用HttpURLConnection訪問網(wǎng)絡(luò)的步驟。答:使用HttpURLConnection訪問網(wǎng)絡(luò)的步驟如下:(1)構(gòu)建URL對象。(2)通過URL對象的openConnection()方法獲取HttpURLConnection對象。(3)調(diào)用setRequestMethod()方法設(shè)置http請求的方式。(4)通過setConnectTimeout()方法設(shè)置連接的超時時間。(5)從http響應信息中獲取響應狀態(tài)碼(6)如果狀態(tài)碼為200,則調(diào)用getInputStream()方法獲取服務器返回的輸入流。(7)調(diào)用disconnect()方法關(guān)閉http連接。四、編程題使用WebView控件設(shè)計一個簡易的瀏覽器,能根據(jù)用戶輸入的網(wǎng)址顯示瀏覽的結(jié)果。項目5一、單選題1.下面代碼描述的透明度動畫,哪個選項的說明是正確的?(A)<alphaandroid:repeatMode="restart"android:repeatCount="infinite"android:duration="1000"android:fromAlpha="0.0"android:toAlpha="1.0"/>A、動畫從透明變化到不透明B、動畫從不透明變化到透明C、動畫持續(xù)時間1000秒D、動畫重播時從最后一幀開始播放2.Android中使用Canvas類中的(B)方法可以繪制橢圓。A、drawRectB、drawOvalC、drawCircleD、drawLine3.播放視頻時,MediaPlayer需要與(D)配合使用。A、VideoViewB、MatrixC、SoundPoolD、SurfaceView4.以下哪種方法能用來判斷音頻/視頻是否正在播放。(C)A、startB、pauseC、isPlayingD、stop二、填空題1.繪圖時用來設(shè)置畫筆顏色的是Paint類,填寫類名。2.從指定位置開始播放音頻需要調(diào)用MediaPlayer的seekTo方法。請寫出方法名。3.在Android中,提供了4種補間動畫,分別是透明度漸變動畫、縮放動畫、平移動畫、旋轉(zhuǎn)動畫。三、判斷題1.逐幀動畫通過順序播放排列好的圖片來實現(xiàn)動畫效果。(對)2.Android中開發(fā)音樂播放器可以使用MediaPlayer,開發(fā)視頻播放器只能用VideoView。(錯)3.SoundPool適合在應用程序中播放按鍵音或者消息提示音等短小的多個音頻。(錯)四、簡答題請簡述使用系統(tǒng)相機拍照流程。答:使用系統(tǒng)相機拍照流程如下:(1)聲明使用相機的權(quán)限和外部存儲設(shè)備的存取權(quán)限,并對權(quán)限進行動態(tài)申請。(2)創(chuàng)建一個動作為MediaStore.ACTION_IMAGE_CAPTURE的Intent對象,調(diào)用Intent的putExtra()方法指定照片輸出路徑,執(zhí)行startActivityForResult()方法啟動系統(tǒng)自帶的拍照程序,即可使用攝像頭進行拍照。五、編程題1.編寫一個使用SurfaceView播放視頻的程序,顯示一個按鈕,按鈕的文字隨著視頻的播放和暫停,在“播放”和“暫停”之間切換。項目6一、選擇題1.TencentLocationListener接口的(A)方法用于接收定位結(jié)果。A、onLocationChanged()B、onStatusUpdate()C、activate()D、deactivate()2.TencentLocationListener接口的(B)方法用于接收GPS、WiFi、Cell狀態(tài)碼。A、onLocationChanged()B、onStatusUpdate()C、activate()D、deactivate()3.LocationSource接口的(C)方法用于設(shè)置位置變化回調(diào)。A、onLocationChanged()B、onStatusUpdate()C、activate()D、deactivate()4.LocationSource接口的(D)方法用于取消位置變化回調(diào)。A、onLocationChanged()B、onStatusUpdate()C、activate()D、deactivate()二、填空題1.定位分為GPS定位、基站定位和WIFI定位三種方式。2.獲取LocationManager對象,需要調(diào)用Context的getSystemService()方法。3.LocationProvider通常有三個,分別是:LocationManager.PASSIVE_PROVIDER、LocationManager.GPS_PROVIDER、LocationManager.NETWORK_PROVIDER。三、判斷題1.使用騰訊地圖服務,需要在AndroidManifest.xml文件的application標簽里,添加名稱為TencentMapSDK的meta,value值是申請的key。(對)2.創(chuàng)建地圖視圖之后,需要跟應用綁定生命周期。(對)四、簡答題1.地圖出現(xiàn)白屏和黑屏有可能是什么原因引起的?需要怎么處理?答:常見的白屏原因是地圖正常繪制渲染,但內(nèi)部資源沒有被正常加載,請開發(fā)者檢查一下網(wǎng)絡(luò)、權(quán)限、存儲是否正常。黑屏情況主要的可能原因是地圖沒有正常繪制渲染,此時請檢查一下地圖視圖有沒有正常綁定各個生命周期方法。2.簡述騰訊地圖的連續(xù)定位的實現(xiàn)過程。答:騰訊地圖的連續(xù)定位的實現(xiàn)過程如下:(1)獲取TencentLocationManager實例。(2)創(chuàng)建位置監(jiān)聽器TencentLocationListener,APP通過位置監(jiān)聽器接收定位SDK的位置變化通知。(3)構(gòu)造TencentLocationRequest定位請求,APP通過向定位SDK發(fā)送定位請求來啟動定位。(4)發(fā)起連續(xù)定位請求或單次定位請求。(5)停止定位。項目7一、選擇題1.(A)類代表傳感器。A、SensorB、SensorManagerC、SensorEventD、Context2. 傳感器采用率定義在(B)類中?A、SensorB、SensorManagerC、SensorEventD、Context二、判斷題1.要注冊各種傳感器需要先獲取SensorManager對象。(對)2.為了減輕使用傳感器耗電大的問題,可以設(shè)置當Activity可見時才使用傳感器。當Activity不可見時,注銷傳感器。(對)三、簡答題簡述如何獲取一個特定傳感器的數(shù)據(jù)。答:獲取一個特定傳感器的數(shù)據(jù)的步驟如下:(1)獲取傳感器管理器sensorManager。(2)調(diào)用sensorManager的getDefaultSensor()方法能獲取某類傳感器。(3)調(diào)用sensorManager的registerListener()方法為傳感器注冊監(jiān)聽器,實現(xiàn)該方法的參數(shù)1(接口)。其中onSensorChanged()方法當傳感器數(shù)據(jù)發(fā)生變化時回調(diào)。參數(shù)sensorEvent有一個類成員變量values,它是一個float數(shù)組,數(shù)組的數(shù)據(jù)根據(jù)傳感器不同而不同。通過它就可以得到傳感器的數(shù)據(jù)。四、編程題1.編寫一個光照傳感器的應用程序,根據(jù)光的強弱顯示不同的界面背景顏色。項目8一、選擇題1.利用Glide設(shè)置圖片未加載完畢時默認顯示的圖片,使用(C)進行設(shè)置。A、withB、loadC、placeholderD、error2.利用Glide設(shè)置圖片加載失敗時顯示的圖片,使用(D)進行設(shè)置。A、withB、loadC、placeholderD、error3.利用Glide預加載圖片時,使用(A)進行設(shè)置。A、preloadB、loadC、placeholderD、error4.利用Glide調(diào)整圖片的大小時,使用(A)進行設(shè)置。A、overrideB、thumbnailC、withD、load5.利用Logger記錄日志的時候,可以根據(jù)不同的日志級別來進行記錄。記錄一般信息使用的方法是(A)。A、Logger.i()B、Logger.e()C、Logger.w()D、Logger.d()6.把List中的元素放在方括號中輸出,使用Logger的哪個方法?(D)A、Logger.json()B、Logger.xml()C、Logger.w()D、Logger.d()二、填空題1.Android常用網(wǎng)絡(luò)框架包括okhttp、retrofit、volley等。2.volley框架的StringRequest請求返回的數(shù)據(jù)是String類型的。3.volley框架的JsonObjectRequest請求返回的數(shù)據(jù)是Json格式的數(shù)據(jù)。4.okhttp封裝了線程池和數(shù)據(jù)轉(zhuǎn)換,能有效提高性能。5.Android常用圖片框架包括Picasso、Glide、Fresco等。6.第一次加載圖片時,Picasso會比Glide快,而當緩存中已經(jīng)有下載好的圖片時,Glide顯示圖片比Picasso快。(填寫Picasso或Glide)7.Glide圖片質(zhì)量上不如Picasso,但是Glide的內(nèi)存消耗較小。(填寫Picasso或Glide)三、判斷題1.okhttp不支持異步請求。(錯)2.retrofit是基于okhttp封裝的網(wǎng)絡(luò)請求框架。(對)3.volley能下載文件。(錯)4.volley具有小圖片的異步加載和緩存等功能。(對)5.volley適合數(shù)據(jù)量不大但是通信頻繁的場景。(對)6.Fresco支持gif,圖片加載效率高,但包很大,API不夠簡潔,用法復雜。(對)7.Glide比Picasso更加簡潔和輕量,Picasso比Glide功能更為豐富。(錯)8.Glide支持gif,Picasso不支持gif。(對)9.Glide只能加載網(wǎng)絡(luò)圖片。(錯)10.Logger打印的日志不支持從日志跳轉(zhuǎn)到源碼。(錯)11.Logger框架能夠方便地控制日志是否輸出。(對)四、簡述題1.請簡述Volley的使用步驟。答:Volley的使用步驟如下:(1)獲取請求隊列RequestQueuemRequestQueue=Vollay.newRequestQueue(Contextcontext);(2)獲取請求RequestmRequest=newObjectRequest(…);ObjectRequest需要根據(jù)自己請求返回的數(shù)據(jù)來定制,Vollay已經(jīng)為我們實現(xiàn)了StringRequest、JsonArrayRequest、JsonObjectRequest、ImageRequest請求。(3)把請求添加到請求隊列中mRequestQueue.add(mRequest);2.請描述JsonObjectRequest構(gòu)造方法的5個參數(shù)的含義。構(gòu)造方法如下:JsonObjectRequest(intmethod,Stringurl,JSONObjectjsonRequest,Listener<JSONObject>listener,ErrorListenererrorListener)答:5個參數(shù)的含義如下:(1)method:用來設(shè)置請求的方式是GET或POST。(2)url:用來設(shè)置請求的地址。(3)jsonRequest:用來設(shè)置發(fā)出POST請求時的請求體。(4)listener:用來設(shè)置請求成功時的回調(diào)。(5)errorListener:用來設(shè)置請求失敗時的回調(diào)。3.利用Glide加載網(wǎng)絡(luò)圖片時,以下代碼塊中的三個括號里需要填寫什么內(nèi)容?Glide.with().load().into();答:第一個括號:填寫Context、Activity、Fragment、FragmentActivity、ApplicationContext中的任何一個。第二個括號:填寫網(wǎng)絡(luò)請求的地址。第三個括號:指定將圖片顯示在哪個ImageView控件中。五、編程題1.請寫出解析JSON數(shù)據(jù)的主要邏輯代碼。假定JSON格式的字符串已經(jīng)保存在變量strJson中。JSON數(shù)據(jù)如下所示: [{"PostNumber":215001,"Province":"江蘇省","City":"蘇州市","Address":"廖家巷新光里"},{"PostNumber":215001,"Province":"江蘇省","City":"蘇州市","Address":"龍興橋順德里"}]答:使用JSONArray類解析JSON數(shù)據(jù)的邏輯代碼如下:publicvoidgetJson(StringstrJson){JSONArrayjsonArray=null;try{jsonArray=newJSONArray(strJson);for(inti=0;i<jsonArray.length();i++){JSONObjectjsonObj=jsonArray.getJSONObject(i);intpostNumber=jsonObj.optInt("PostNumber");Stringprovince=jsonObj.optString("Province");Stringcity=jsonObj.optString("City");Stringaddress=jsonObj.optString("Address");}}catch(JSONExceptione){e.printStackTrace();}}2.編寫一個程序,將6幅圖片排列成3行2列,并對圖片做圓形化處理。項目9一、選擇題1.在典型的組件化架構(gòu)中,(A)負責管理各個業(yè)務組件和打包APK,沒有具體的業(yè)務功能。A、App殼B、業(yè)務組件層C、通用組件庫D、以上都不對2.在典型的組件化架構(gòu)中,(B)的每個組件都能獨立編譯運行,組件之間不能直接調(diào)用。A、App殼B、業(yè)務組件層C、通用組件庫D、以上都不對3.在典型的組件化架構(gòu)中,(C)包含了各種開源庫以及與業(yè)務無關(guān)的各種自主研發(fā)的工具,供業(yè)務組件調(diào)用。A、App殼B、業(yè)務組件層C、通用組件庫D、以上都不對4.以下哪一項不符合組件化的特點。(D)A、符合單一責任原則B、加快編譯速度C、提高代碼的復用性D、降低協(xié)作效率5.(A)讓數(shù)據(jù)可在發(fā)生屏幕旋轉(zhuǎn)等配置更改后繼續(xù)留存。A、ViewModelB、LiveDataC、DataBindingD、以上都不對6.(B)是一種可觀察的數(shù)據(jù)存儲器類,具有生命周期感知能力。A、ViewModelB、LiveDataC、DataBindingD、以上都不對7.(C)以聲明的方式將應用中的數(shù)據(jù)源綁定到界面組件。A、ViewModelB、LiveDataC、DataBindingD、以上都不對二、填空題1.系統(tǒng)提供了TypeArray類,獲取到該類的實例后就可通過get***()的方法獲得布局文件中設(shè)置的屬性值。2.通過復寫onMeasure()方法能測量View的大小,通過復寫onDraw()方法能繪制自定義控件的效果。3.在attrs.xml文件中,使用attr節(jié)點來聲明屬性名及其接受的數(shù)據(jù)格式。4.在典型的組件化架構(gòu)中,APP殼負責管理各個業(yè)務組件和打包APK,沒有具體的業(yè)務功能。5.配置為Application插件意味著該模塊能獨立運行調(diào)試,項目構(gòu)建后會輸出一個APK安裝包。6.配置為Library插件意味著該模塊以插件的形式進行集成調(diào)試,構(gòu)建后輸出ARR包。7.Jetpack主要包括4個部分,分別是基礎(chǔ)(Foundation)、架構(gòu)(Architecture)、行為(Behavior)和界面(UI)。8.ViewModel把View中的數(shù)據(jù)獨立處理,單獨對其進行存儲和管理,使得Activity/Fragment的功能得到簡化,不需要再管理界面中的數(shù)據(jù)。9.用于更新界面的LiveData對象應該存儲在ViewModel對象中,而不是將其存儲在Activity或Fragment中。三、判斷題1.在軟件工程中,耦合指的是程序間的依賴關(guān)系,包括類之間的依賴和方法之間的依賴。(對)2.在程序設(shè)計中,要盡可能降低耦合度。(對)3.在代碼實現(xiàn)上,可以通過callback接口回調(diào)實現(xiàn)解耦。(對)4.AndroidJetpack可以消除大量重復樣板式的代碼。(對)5.Jetpack組件庫可在各種Android版本和設(shè)備中以一致的方式運作。(對)6.Jetpack組件不能搭配工作,只能單獨使用。(錯)7.為觀察LiveData對象而注冊的非活躍觀察者也會收到更改通知。(錯)四、簡單題1.請簡述自定義UI控件的步驟。答:自定義UI組件一般分為3個步驟。一是自定義標簽屬性,二是自定義組件類,三是在XML布局文件中使用自定義的UI控件。(1)自定義標簽屬性在values目錄下創(chuàng)建attrs.xml文件,通過declare-styleable節(jié)點的name屬性,定義樣式屬性集的名稱,通過attr節(jié)點的name屬性和format屬性,指定自定義屬性的屬性名和屬性值的類型。(2)自定義組件類。一般分為兩種情況。一是自定義的類繼承自View及其子類,這種情況下,通常通過復寫onMeasure()方法測量View的大小,并通過復寫onDraw()方法繪制自定義控件的效果。二是自定義的類繼承自ViewGroup或者各種Layout,這種情況下,通常是把系統(tǒng)原生控件組合在一起形成復合的自定義控件。不管哪種情況,都需要創(chuàng)建構(gòu)造方法;如果有自定義屬性,則需要獲取attrs.xml中定義的屬性;如果有需求,還可以在此綁定業(yè)務邏輯,實現(xiàn)與用戶的交互。(3)在XML布局文件中使用自定義的UI控件。使用包名.類名的完整路徑使用自定義的UI控件。2.請簡述你對軟件工程中耦合和解耦的理解。答:在軟件工程中,耦合指的是程序間的依賴關(guān)系,包括類之間的依賴和方法之間的依賴。依賴程度越高說明耦合度越高,維護成本也越高。降低耦合度即可理解為解耦。在程序設(shè)計中,要盡可能降低耦合度,如果發(fā)現(xiàn)代碼耦合,就要采取解耦技術(shù)。在整體設(shè)計上,將整個業(yè)務應用劃分為表現(xiàn)層(UI)、業(yè)務邏輯層(BLL)及數(shù)據(jù)訪問層(DAL),降低層與層之間的依賴。在代碼實現(xiàn)上,可以通過callback接口回調(diào)實現(xiàn)解耦。3.請說出組件化給我們帶來的5個好處。答:組件化給我們帶來的好處有:(1)符合單一責任原則:各個組件專注自身功能的實現(xiàn),模塊中代碼高度聚合,只負責一項業(yè)務。(2)能加快編譯速度:每個業(yè)務功能都能獨立編譯運行。(3)能提高協(xié)作效率。由于各業(yè)務研發(fā)可以互不干擾,團隊成員只需專注自身負責的業(yè)務,降低團隊成員熟悉項目的成本。(4)能提高代碼的復用性。由于通用功能都封裝在通用組件庫中,業(yè)務組件添加了對通用組件庫的依賴便可以直接調(diào)用。(5)能降低維護成本。由于業(yè)務功能的獨立性,對一個業(yè)務的修改和增刪不會影響其他業(yè)務。五、編程題1.設(shè)計一個應用程序,包含“圖書”和“新聞”兩個業(yè)務組件,以及一個通用組件庫。兩個業(yè)務模塊各司其職,相互獨立,通用組件庫包含了所有模塊需要的依賴庫,以及一些工具類。圖書模塊用來展示圖書列表,新聞模塊用來展示新聞列表。能在圖書模塊和新聞模塊之間跳轉(zhuǎn)。項目10一、填空題1.Zygote進程加載和初始化一些核心類庫,并創(chuàng)建一個服務端socket,等待AMS發(fā)起socket請求。2.在Android應用程序框架層中,由AMS(ActivityManagerService)組件負責為Android應用程序創(chuàng)建新的進程。3.廣播的注冊分為靜態(tài)注冊和動態(tài)注冊兩種方式。4.Service啟動方式有兩種,一種是通過Context的startService啟動Service,另一種是通過Context的bindService綁定Service。5.在Android中,Binder機制采用C/S架構(gòu)模式,基于內(nèi)存映射,在內(nèi)核空間將Client端和Service端兩個用戶空間的進程聯(lián)系在一起。6.操作系統(tǒng)從邏輯上將虛擬空間劃分為用戶空間和內(nèi)核空間。7.Android中可以將線程分為主線程MainThread和工作線程WorkerThread兩大類。二、判斷題1.所有的系統(tǒng)服務都是需要在ServiceManager中進行注冊。(對)2.要想啟動一個應用程序,首先要保證這個應用程序所需要的應用程序進程已經(jīng)啟動。(對)3.在Android系統(tǒng)中,廣播是一種運用在組件之間傳遞消息的機制,廣播接收者是Android四大組件之一。(對)4.在操作系統(tǒng)中,進程之間的內(nèi)存和數(shù)據(jù)都是不共享的。(對)5.Android線程間消息處理機制是一種同步回調(diào)機制。(錯)三、簡答題1.請簡述應用程序進程創(chuàng)建過程。答:應用程序進程創(chuàng)建過程的步驟分為兩個部分。(1)AMS請求Zygote創(chuàng)建應用程序進程每當AMS需要創(chuàng)建一個新的應用程序進程來啟動一個應用程序組件時,它就會調(diào)用AMS類的成員函數(shù)startProcessLocked向Zygote進程發(fā)送一個創(chuàng)建應用程序進程的請求。(2)Zygote接收請求并創(chuàng)建應用程序進程。Zygote進程收到創(chuàng)建新的應用進程的請求后,會調(diào)用processOneCommand()方法,使用fork在當前進程中創(chuàng)建子進程。子進程中使用handleChildProc()方法調(diào)用ZygoteInit對子進程環(huán)境做初始

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論