版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
15/15國家開放大學(xué)《Android網(wǎng)絡(luò)開發(fā)技術(shù)》形考任務(wù)1-6參考答案題目隨機,下載后利用查找功能完成學(xué)習(xí)任務(wù)形考任務(wù)1【簡答題】完成以下JSON的解析,完成主體代碼即可,解析方法及庫不限。答:publicclassJSONObjectActivityextendsAppCompatActivity{@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_jsonobject);newThread(newRunnable(){@Overridepublicvoidrun(){//模擬進行網(wǎng)絡(luò)請求StringjsonResult=FileUtils.readXML();parseJson(jsonResult);}).start();privatevoidparseJson(StringjsonData){Personperson=newPerson();try{JSONObjectjsonObject=newJSONObject(jsonData);//解析persons數(shù)組JSONArrayphones=jsonObject.getJSONArray("phones");person.phones=newArrayList<>();for(inti=0;i<phones.length();i++){person.phones.add((String)phones.get(i));//解析普通屬性=jsonObject.getString("name");person.age=jsonObject.getInt("age");//解析addressJSONObjectaddressJson=jsonObject.getJSONObject("address");Addressaddress=newAddress();address.country=addressJson.getString("country");vince=addressJson.getString("province");person.address=address;System.out.println(person.toString());}catch(JSONExceptione){e.printStackTrace();}classPerson{List<String>phones;Stringname;intage;Addressaddress;@OverridepublicStsringtoString(){return"Person{"+"phones="+phones+",name='''+name+'\"+",age="+age+",address="+address+'}';classAddress{Stringcountry;Stringprovince;@OverridepublicStringtoString(){return"Address{"+"country='''+country+'\"+形考任務(wù)2【簡答題】在AndroidManifest.xml中注冊廣播接收器BootBroadcastReceiver。答:BroadcastReceiver廣播接收器用于監(jiān)聽/接受Android應(yīng)用分發(fā)的各類廣播并做出相應(yīng)的響應(yīng)應(yīng)用場景:監(jiān)聽系統(tǒng)事件:如開機廣播,網(wǎng)絡(luò)鏈接與斷開,屏幕轉(zhuǎn)向燈不同組件間(Activity/Service,包括不同APP間)的通信多線程通信先自定義一個廣播接收器,創(chuàng)建MyBroadcastReceiver類來繼承廣播接收器類,并實現(xiàn)它內(nèi)部的方法publicclassMyBroadcastReceiverextendsBroadcastReceiver{@OverridepublicvoidonReceive(Contextcontext,Intentintent){廣播接收器的注冊方法分為靜態(tài)注冊和動態(tài)注冊兩種方式靜態(tài)注冊在AndroidManifest.xml文件的<application>標(biāo)簽內(nèi)聲明<!--靜態(tài)注冊廣播接收器--><receiverandroid:name=".MyBroadcastReceiver"><!--接受哪些廣播--><intent-filter><!--開機廣播--><actionandroid:name="ent.action.BOOT_COMPLETED"/><!--電量低廣播--><actionandroid:name="ent.action.BATTERY_LOW"/></intent-filter></receiver>完成注冊后就可以在MyBroadcastReceiver類中接受廣播實現(xiàn)相關(guān)功能publicclassMyBroadcastReceiverextendsBroadcastReceiver{privatestaticfinalStringTAG="MyBroadcastReceiver";@OverridepublicvoidonReceive(Contextcontext,Intentintent){//接受廣播if(intent!=null){//接收到的什么廣播(廣播的名稱)Stringaction=intent.getAction();Log.d(TAG,"onReceive:"+action);這里已經(jīng)可以通過意圖對象來接受廣播信息并進行處理了動態(tài)注冊動態(tài)注冊在onCreate()方法里進行注冊@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//新建一個廣播接收器broadcastReceiver=newMyBroadcastReceiver();//要接收哪些廣播IntentFilterintentFilter=newIntentFilter();///電量低廣播形考任務(wù)31.SharedPreference存儲數(shù)據(jù),最后提交數(shù)據(jù)時,推薦使用()。A.commit()B.apply()C.put()D.push()2.使用SQLite讀取數(shù)據(jù)內(nèi)容時,用到的核心類是()。A.ContentValuesB.CursorC.SQLiteOpenHelperD.SQLite3.自定義Service時,必須實現(xiàn)的方法是()。A.onCreate()B.onStartCommand()C.onBind()D.onDestroy()4.使用MediaPlayer開始播放音視頻的方法是()。A.prepare()B.start()C.release()D.setDataSource()5.自定義View時必須實現(xiàn)的方法是()。A.onMeasure()B.onDraw()C.onLayout()D.equals()6.AndroidAsyncTask異步任務(wù)中,哪個方法是運行在主線程中()A.doInBackground()B.onPreExecute()C.onPostExecute()D.onPregressUpdate()7.Android中開啟事務(wù)的方法正確的是()。A.db.startTransaction()B.db.beginTransaction()C.db.endTransaction()D.intent.startTransaction()8.HTTP是萬維網(wǎng)實現(xiàn)數(shù)據(jù)通信的基石。它基于()來傳遞數(shù)據(jù)。A.TCP/IPB.File協(xié)議C.FTPD.mailto協(xié)議9.HTTP是()。A.不保存狀態(tài)的協(xié)議B.保存狀態(tài)的協(xié)議C.狀態(tài)不確定的協(xié)議D.以上都不對10.URL的一般格式為()A.<協(xié)議>://<端口>:<主機>/<路徑>B.<協(xié)議>://<路徑>:<主機>/<端口>C.<協(xié)議>://<主機>:<端口>/<路徑>D.<端口>://<路徑>:<主機>/<協(xié)議>11.URL(uniformresourcelocator,統(tǒng)一資源定位符)是互聯(lián)網(wǎng)標(biāo)準資源的地址。通過一個URL,能找到()資源。A.一個B.兩個C.三個D.四個12.下列說法錯誤的是()A.獲取HttpClient實例可以直接newHttpClient()。B.獲取到HttpClient實例client后,想執(zhí)行g(shù)et請求,client.execute(httpGet),然后封裝HttpGet。C.使用HttpClient方式進行post請求需要封裝HttpPost實例。D.UrlEncodedFormEntity是將提交給服務(wù)器參數(shù)進行編碼的類。13.以下是Android中用于xml解析方式的是()A.SAXB.DOMC.XmlPullParserD.Juint14.做網(wǎng)絡(luò)圖片查看器的時候,需要把獲取的流信息轉(zhuǎn)換為()A.StringB.intC.BitmapD.Text15.關(guān)于Android中消息機制說法正確的是()A.Handler只能用來發(fā)送消息。B.Handler是用來發(fā)送消息和處理消息的。C.MessageQueue是用來收集消息并主動發(fā)送消息。D.Looper是主消息的循環(huán)器.Looper是由handler創(chuàng)建的。16.利用內(nèi)容解析者查詢短信數(shù)據(jù)時uri怎么寫()A.Uriuri=Uri.parse(“content://sms”)B.Uriuri=Uri.parse(“content://sms/data”)C.Uriuri=Uri.parse(“content://sms/contact”)D.Uriuri=Uri.parse(“sms/”)17.可以在Activity中得到ContentResolver實例對象的方法是()A.newContentResolver()B.getContentResolver()C.newInstance()D.ContentUris.newInstance()18.可以在Activity中得到ContentResolver實例對象的方法是()A.newContentResolver()B.getContentResolver()C.newInstance()D.ContentUris.newInstance()19.在下列選項中,關(guān)于內(nèi)容提供者的說法錯誤的是()A.ContentProvider是一個抽象類,只有繼承后才能使用。B.內(nèi)容提供者只有在AndroidManifest.xml文件中注冊后才能運行。C.內(nèi)容提供者為其它應(yīng)用程序提供了統(tǒng)一的訪問數(shù)據(jù)庫的方式。D.內(nèi)容提供者不是抽象類。20.在下列選項中,用于查詢數(shù)據(jù)的方法是()A.updateB.insertC.queryD.delete21.對于Android開發(fā)來說,()是網(wǎng)絡(luò)開發(fā)中使用最多、最重要的網(wǎng)絡(luò)通信方式。A.HTTPB.FTPC.TCP/IPD.FDDI22.自定義一個數(shù)據(jù)適配器MyAdatper,需要讓它繼承的類是()A.DefaultAdapterB.ParentAdapterC.BaseAdapterD.BasicAdapter23.下列方法中,()執(zhí)行時釋放了鎖。A.wait()B.sleep()C.notify()D.clone24.AsyncTask中的()方法在子線程中執(zhí)行。A.onProgressUpdate()B.onPreExecute()C.doInBackground()D.onPostExecute()25.Android平臺的C/C++類庫主要集中在()。A.Application層B.Framwork層C.Library層D.LinuxKernel層26.Glide可以設(shè)置緩存模式。(×)27.在Service中可以直接進行耗時操作。(×)28.Service可以使用ServiceConnection實現(xiàn)與Activity的交互。(×)29.較長時間的定時任務(wù)可以使用Alarm來實現(xiàn)。(×)30.Android中使用openFileOutput(Stringname,intmode)方法獲取到文件輸出流時,第二個參數(shù)mode常用模式有4種。(√)31.Android中創(chuàng)建內(nèi)容提供者要繼承ContentObserver。(×)32.ContentProvider在實際的開發(fā)中不需要注冊,可以直接使用。(×)33.Android中數(shù)據(jù)只能存儲到sd卡上。(×)34.Android對.png格式的位圖支持最好。(√)35.Android提供的用于媒體播放的類,可播放音頻和視頻,但是僅僅限于MP3和MP4等有限的格式。(√)36.Bitmap包含的圖片可以來自文件,也可以由程序創(chuàng)建。(√)37.Bitmap可以理解為一種為存儲圖形像素而設(shè)計的數(shù)據(jù)結(jié)構(gòu)。(√)38.Canvas是一個操作繪圖的平臺。(√)39.File適用于存儲文本類型數(shù)據(jù)或者二進制數(shù)據(jù)。(√)40.onStartCommand()方法在Service的一個完整生命周期內(nèi)可能會被調(diào)用多次。(√)41.onStartCommand()方法在每次啟動Service時都會被調(diào)用。(√)42.Paint主要的繪圖工具類。(√)43.PULL解析也是一種基于事件流驅(qū)動的XML解析方式。(√)44.FileProvider類是一個特殊的ContentProvider。(√)45.SharedPreferences所有的信息都是按照key-value的形式保存的。(√)46.在/data/data/包名/cache目錄下可以cache軟件的緩存數(shù)據(jù),當(dāng)清除緩存時數(shù)據(jù)就會刪除。(√)47.通過JNI可以訪問Java的靜態(tài)變量。(×)48.NDK是使用C/C++語言開發(fā)的。(×)49.在Android6.0之后,讀寫文件權(quán)限屬于危險權(quán)限,需要運行動態(tài)申請。(√)50.在Android中,如果要實現(xiàn)配置信息的保存,需要使用SharedPreferences存儲技術(shù)。(√)形考任務(wù)4【簡答題】Android系統(tǒng)提供了兩種方式來識別一個NFCTag是否為Activity需要處理的內(nèi)容,對這兩種進行討論。答:1.NFC是什么近距離無線通信技術(shù)(NearFieldCommunication,NFC),是由飛利浦公司和索尼公司共同開發(fā)的一種非接觸式識別和互聯(lián)技術(shù),可以在移動設(shè)備、消費類電子產(chǎn)品、PC和智能設(shè)備間進行近距離無線通信。NFC提供了一種簡單的、非觸控式的解決方案,可以讓消費者簡單直觀地交換信息、訪問內(nèi)容與服務(wù)。NFC整合了非接觸式讀卡器、非接觸式智能卡和點對點(Peer-to—Peer)通信功能,為消費者開創(chuàng)了全新的便捷生活方式。手機和NFC技術(shù)的結(jié)合,將會給消費者提供極大的生活便利,例如移動支付、位置服務(wù)信息、身份識別、公共交通卡等應(yīng)用,在醫(yī)療保健、優(yōu)惠券、智能海報等許多領(lǐng)域有也有巨大的應(yīng)用潛力。2.NFC的三種工作方式(1)讀卡器模式數(shù)據(jù)在NFC芯片中,可以簡單理解成“刷標(biāo)簽”。本質(zhì)上就是通過支持NFC的手機或其它電子設(shè)備從帶有NFC芯片的標(biāo)簽、貼紙、名片等媒介中讀寫信息。通常NFC標(biāo)簽是不需要外部供電的。當(dāng)支持NFC的外設(shè)向NFC讀寫數(shù)據(jù)時,它會發(fā)送某種磁場,而這個磁場會自動的向NFC標(biāo)簽供電。(2)仿真卡模式數(shù)據(jù)在支持NFC的手機或其它電子設(shè)備中,可以簡單理解成“刷手機”。本質(zhì)上就是將支持NFC的手機或其它電子設(shè)備當(dāng)成借記卡、公交卡、門禁卡等IC卡使用?;驹硎菍⑾鄳?yīng)IC卡中的信息憑證封裝成數(shù)據(jù)包存儲在支持NFC的外設(shè)中。在使用時還需要一個NFC射頻器(相當(dāng)于刷卡器)。將手機靠近NFC射頻器,手機就會接收到NFC射頻器發(fā)過來的信號,在通過一系列復(fù)雜的驗證后,將IC卡的相應(yīng)信息傳入NFC射頻器,最后這些IC卡數(shù)據(jù)會傳入NFC射頻器連接的電腦,并進行相應(yīng)的處理(如電子轉(zhuǎn)帳、開門等操作)。(3)點對點模式該模式與藍牙、紅外差不多,用于不同NFC設(shè)備之間進行數(shù)據(jù)交換,不過這個模式已經(jīng)沒有有“刷”的感覺了。其有效距離一般不能超過4厘米,但傳輸建立速度要比紅外和藍牙技術(shù)快很多,傳輸速度比紅外塊得多,如過雙方都使用Android4.2,NFC會直接利用藍牙傳輸。這種技術(shù)被稱為AndroidBeam。所以使用AndroidBeam傳輸數(shù)據(jù)的兩部設(shè)備不再限于4厘米之內(nèi)。點對點模式的典型應(yīng)用是兩部支持NFC的手機或平板電腦實現(xiàn)數(shù)據(jù)的點對點傳輸,例如,交換圖片或同步設(shè)備聯(lián)系人。因此,通過NFC,多個設(shè)備如數(shù)字相機,計算機,手機之間,都可以快速連接,并交換資料或者服務(wù)。3.NDEF是什么?不同的NFC標(biāo)簽之間差異很大,有的只支持簡單的讀寫操作,有時還會采用支持一次性寫入的芯片,將NFC標(biāo)簽設(shè)計成只讀的。當(dāng)然,也存在一些復(fù)雜的NFC標(biāo)簽,例如,有一些NFC標(biāo)簽可以通過硬件加密的方式限制對某一區(qū)域的訪問。還有一些標(biāo)簽自帶操作環(huán)境,允許NFC設(shè)備與這些標(biāo)簽進行更復(fù)雜的交互。這些標(biāo)簽中的數(shù)據(jù)也會采用不同的格式。但AndroidSDKAPI主要支持NFC論壇標(biāo)準(ForumStandard),這種標(biāo)準被稱為NDEF(NFCDataExchangeFormat,NFC數(shù)據(jù)交換格式)。4.Tag發(fā)布系統(tǒng)當(dāng)android設(shè)備掃描到一個NFCtag,通用的行為是自動找最合適的Activity會處理這個tagIntent而不需要用戶來選擇哪個Activity來處理。因為設(shè)備掃描NFCtags是在很短的范圍和時間,如果讓用戶選擇的話,那就有可能需要移動設(shè)備,這樣將會打斷這個掃描過程。你應(yīng)該開發(fā)你只處理需要處理的tags的Activity,以防止讓用戶選擇使用哪個Activity來處理的情況。Android提供兩個系統(tǒng)來幫助你正確的識別一個NFCtag是否是你的Activity想要處理的:Intent發(fā)布系統(tǒng)和前臺Activity發(fā)布系統(tǒng)。形考任務(wù)51.使用JNI調(diào)用Java類中方法getTest()。答:首先在java中定義一個靜態(tài)方法供JNI調(diào)用.static{System.loadLibrary("jni-test");@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activitymain);get();//定義一個靜態(tài)方法,提供給JNI調(diào)用publicstaticvoidmethodCalledByJni(StringmsgFromJni){Log.i(TAG,"methodCalledByJni,msg:"+msgFromJni);//定義調(diào)用本地方法,好讓本地方法回調(diào)java中的方法publicnativevoidget();101112131415161718然后在JNI中調(diào)用上面定義的靜態(tài)方法:I/定義調(diào)用java中的方法的函數(shù)voidcallavaMethod(JNIEnv*env,jobjectthiz){//先找到要調(diào)用的類jclassclazz=env->FindClass("com/gavinandre/jnitestapp/MainActivity");if(clazz==NULL){printf("findclassMainActivityerror!");return;//獲取java方法id//參數(shù)二是調(diào)用的方法名,參數(shù)三是方法的簽名jmethodIDid=env->GetStaticMethodID(clazz,"methodCalledByJni","(Ljava/lang/String;)V");if(id==NULL){printf("findmethodmethodCalledByJnierror!");return;jstringmsg=env->NewStringUTF("msgsendbycallJavaMethodintest.cpp.");//開始調(diào)用java中的靜態(tài)方法env->CallStaticVoidMethod(clazz,id,msg);1819從calllavaMethod的實現(xiàn)可以看出,程序首先根據(jù)類名com/gavinandre/jnitestapp/MainActivity找到類,然后再根據(jù)方法名methodCalledByJni找到方法,其中(Ljava/lang/String;)V是methodCalledByJni2.【簡答題】簡述Service原理答:一.在新進程啟動Service第一步:APP向AMS發(fā)送一個啟動Service的消息通過AMN/AMP把要啟動的Service信息發(fā)送給AMS第二步:AMS創(chuàng)建新的進程這一步,AMS會檢查Service是否在AndroidManifest中申明。AMS檢查啟動Service的進程是否存在,若不存在,先把Service信息保存下來,然后創(chuàng)建一個新進程。在AMS中,每個Service,都使用ServiceRecord對象來保存第三步:新進程啟動,通知AMS這一步會創(chuàng)建新的ActivityThread第四步:AMS把傳進來的ActivityThread對象改造為ATP,通過ATP把要啟動的Service信息發(fā)送給新進程第五步:新進程啟動Service其中第1/3/4步都是跨進程通信,如果是啟動統(tǒng)一進程中的Service,則省略掉啟動新進程那兩步二.綁定Service綁定就是把AMS發(fā)送的啟動消息換為綁定消息,app會收到AMS的兩個消息,啟動Service和綁定Service,并把一個Binder對象傳給AMS最后,AMS會把Binder對象發(fā)送給App,這里用的是AIDL,AIDL的名字是IServiceConnection形考任務(wù)6【簡答題】常用的網(wǎng)絡(luò)權(quán)限包括什么
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 卒中專科護士培訓(xùn)
- 內(nèi)蒙古包頭市昆都侖區(qū)友誼大街二十小2024-2025學(xué)年六年級上學(xué)期月考數(shù)學(xué)試卷
- 2025蛇年新年工作總結(jié)金蛇送福模板
- 期中試題2022-2023學(xué)年冀教版(三起)英語五年級上冊(無答案)
- 廣東省揭陽市惠來縣第一中學(xué)2024-2025學(xué)年高一上學(xué)期第一次階段考試物理試題(含答案)
- T-TSSP 043-2023 花椒麻素快速檢測方法
- 【課件】Unit4+Grammar+Focus-3a-3d課件人教版英語七年級上冊
- 語法專項之非謂語動詞,分詞
- 八情感性精神障礙分解
- Windows Server網(wǎng)絡(luò)管理項目教程(Windows Server 2022)(微課版)2.6 任務(wù)2 客戶端加入活動目錄
- 電氣工程及其自動化職業(yè)規(guī)劃課件
- 第四單元基礎(chǔ)測試卷-2024-2025學(xué)年統(tǒng)編版語文六年級上冊
- 2024年房產(chǎn)贈與合同范本(31篇)
- 2024年中國移動校園招聘高頻難、易錯點500題模擬試題附帶答案詳解
- 物理透鏡 課件 2024-2025學(xué)年蘇科版八年級上冊物理
- 單位消防安全管理制度
- 地理氣溫的變化與分布課件-2024-2025學(xué)年七年級地理上學(xué)期(2024)人教版
- 【智慧醫(yī)療】醫(yī)療健康產(chǎn)業(yè)園概念策劃方案(XQ)
- 智能分揀與配送中心建設(shè)方案
- 2024年計算機二級WPS考試題庫380題(含答案)
- 2024中國郵政集團江蘇分公司春季招聘高頻500題難、易錯點模擬試題附帶答案詳解
評論
0/150
提交評論