版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
《Android應(yīng)用開發(fā)》課后習(xí)題參考答案
第1章Android開發(fā)簡介
1.如何搭建Android開發(fā)環(huán)境?
搭建Android開發(fā)環(huán)境需要以下幾個(gè)步驟:
(1)下載和安裝JDK
(2)配置PATH環(huán)境變量
(3)下載和安裝AndroidStudio
(4)創(chuàng)建Android模擬器
(5)下載和安裝AndroidSDK
2.Android源代碼的編譯過程是怎樣的?
Java源文件經(jīng)過JDK編譯器編譯成class文件后,Dalvik虛擬機(jī)中的Dx工具會將部分
class文件轉(zhuǎn)換成dex文件,dex文件進(jìn)一步被優(yōu)化成odex文件。
3.Android系統(tǒng)架構(gòu)包含的層次以及各層的特點(diǎn)是怎樣的?
Android系統(tǒng)采用分層架構(gòu),從低到高分為4層,依次是Linux內(nèi)核層、核心類庫層、
應(yīng)用程序框架層和應(yīng)用程序?qū)?
Linux內(nèi)核層為Android設(shè)備的各種硬件提供了底層驅(qū)動,底層驅(qū)動是應(yīng)用程序以訪問
底層硬件的形式實(shí)現(xiàn)人機(jī)交互。核心類庫層包含了系統(tǒng)庫和Android運(yùn)行時(shí)庫(Android
Runtime)o系統(tǒng)庫為Android系統(tǒng)提供主要的特性支持,Android運(yùn)行時(shí)庫提供了一些核心
庫和Dalvik虛擬機(jī)。應(yīng)用程序框架層提供了編寫應(yīng)用程序時(shí)用到的各種API。應(yīng)用程序?qū)邮?/p>
指所有安裝在移動設(shè)備上的Appo
第2章Android應(yīng)用界面布局設(shè)計(jì)
4.線性布局哪個(gè)屬性設(shè)置界面元素呈現(xiàn)垂直或水平排列?
屬性android:orientation控制排列方向,設(shè)置值"vertical"為垂直方向、"horizontal"
為水平方向,如果不設(shè)置該屬性,則默認(rèn)為水平方向排列。
5.屬性值match_parent和wrap_content有何區(qū)別?
在為控件設(shè)置尺寸layout_width和layout_height時(shí)。使用match_parent表示和父容器
尺寸一樣大,使用wrap_content表示控件的尺寸大小設(shè)置為包裹住內(nèi)容即可。
6.約束布局中如何實(shí)現(xiàn)控件居中?
在線性布局中,常使用android:layout_gravity屬性的"center"屬性值來設(shè)計(jì)控件的居
中顯示,在約束布局中通過設(shè)置控件的上下左右約束來完成控件的居中設(shè)計(jì)。設(shè)置約束后,
控件會自動排列在中間位置。
7.幀布局有什么特點(diǎn)?
幀布局方式,是將放在其中的子控件進(jìn)行堆疊放置,所有子控件的位置都是從幀布局的
左上角開始,因?yàn)槭嵌询B放置,所以會發(fā)生子控件覆蓋,后放置的子控件位于上面,會遮住
先放置的子控件。幀布局只有基礎(chǔ)屬性,不能使用androidgravity屬性設(shè)置子控件的位置。
8.安卓提供了哪些常用輔助布局工具?
常用的輔助工具有分組、屏障、輔助線等。分組Group可以把多個(gè)控件歸為一組,方便
隱藏或顯示一組控件??梢允褂闷琳螧arrier,在多個(gè)控件的一側(cè)放置一個(gè)屏障,相當(dāng)于一個(gè)
虛擬的分割墻,另一側(cè)控件以屏障Barrier為參照目標(biāo)控件設(shè)置約束關(guān)系,解決以多控件為
參照的布局問題。
第3章Android應(yīng)用界面效果
9.樣式和主題有什么不同?
樣式與主題在定義的語法方式上是一樣的,但應(yīng)用場合不同。樣式主要是針對控件的定
義。主題是針對整個(gè)應(yīng)用、Activity窗口的外觀設(shè)置.影響面更大,一次指定,可以使整個(gè)
應(yīng)用或整個(gè)AcWity窗口生效。。
10.sh叩e形狀與圖片相比有何優(yōu)點(diǎn)?比較適合用在哪些場合?
使用shape標(biāo)簽定義各種各樣的形狀,應(yīng)用到界面的控件中,使控件呈現(xiàn)特殊效果的外
觀。與使用圖片相比,使用shape形狀可以減少安裝包大小,并能較好地適配不同尺寸的手
機(jī)°適合應(yīng)用一些規(guī)則形狀圖形做背景時(shí)使用。
11.layer-list圖層列表的中可以使用哪些元素?
layer-list圖層列表,通過將圖一層一層疊加,來實(shí)現(xiàn)更復(fù)雜的顯示效果。layer-list中不
同的圖層使用item節(jié)點(diǎn)來定義,先定義節(jié)點(diǎn)的圖形在下面,后定義的圖形在上面??梢允?/p>
用圖片、形狀、圖層列表等作為節(jié)點(diǎn)中的圖層。
12.selector選擇器用途是什么?有何優(yōu)點(diǎn)?
selector選擇器是一種狀態(tài)列表,用來定義控件在不同狀態(tài)下的外觀。比如,將控件的
背景、顏色等屬性值設(shè)置為選擇器,當(dāng)控件狀態(tài)發(fā)生變化后,它的背景和顏色也會隨之變化。
使用選擇器配置控件外觀,使用上比較便利,可以節(jié)省大量后臺代碼開發(fā)調(diào)試工作,并且易
于修改和調(diào)試。
13.Android應(yīng)用如何實(shí)現(xiàn)國際化?上述界面設(shè)計(jì)工具可否應(yīng)用在國際化中?
通過增加面向特定國家和地區(qū)后綴的同名目錄、資源文件等,讓應(yīng)用實(shí)現(xiàn)資源自動適配
國際化。當(dāng)Android應(yīng)用運(yùn)行時(shí),Android系統(tǒng)會根據(jù)運(yùn)行的地區(qū)環(huán)境語言來匹配和使用這
些資源,從而實(shí)現(xiàn)自動適配目標(biāo)國家地區(qū)的語言文本和界面。
第4章Android應(yīng)用人機(jī)交互
14.Android應(yīng)用處理事件的方式有哪幾種?
Android開發(fā)框架提供了兩種事件開發(fā)方式。第一種方式,通過注冊事件監(jiān)聽器,讓應(yīng)
用獲得和處理事件。第二種方式,通過重寫父類事件方法,來獲得和處理事件,比如重寫
Activity類中的生命期方法來處理窗口的生命期事件。
15.選項(xiàng)菜單和上下文菜單有什么區(qū)別?如何規(guī)劃兩種菜單中的菜單項(xiàng)功能?
有的Android設(shè)備,會提供物理或虛擬的菜單按鍵,當(dāng)按下后,可以激活應(yīng)用的選項(xiàng)菜
單。有的應(yīng)用長按某個(gè)區(qū)域后會彈出上下文菜單。
選項(xiàng)菜單針對整個(gè)窗口的操作,上下文菜單針對某個(gè)控件的操作,根據(jù)應(yīng)用范圍選擇不
同的菜單。
16.常見控件的功能和用途是什么?控件如何處理事件?
UI界面控件,主要為UI界面開發(fā)提供支撐,用于信息呈現(xiàn)、用戶交互操作等功能。控
件多通過注冊事件監(jiān)聽器,來獲得和處理事件。有的事件是通過重寫父類事件方法,來獲得
和處理事件。
17.軟鍵盤的作用是什么?何時(shí)顯示軟鍵盤比較好?
使用Android應(yīng)用時(shí),經(jīng)常會用到軟鍵盤輸入數(shù)據(jù)。軟鍵盤有多種類型以應(yīng)對不同的輸
入場景。根據(jù)窗口應(yīng)用場景,來決定在窗口呈現(xiàn)時(shí)同時(shí)顯示軟鍵盤,還是等點(diǎn)擊用戶輸入框
時(shí)顯示軟鍵盤。
第5章Activity和Intent
1.Activity的作用是什么?
Activity是Android程序中的四大組件之一,為用戶提供可視化界面及操作。每個(gè)APP
中可以包含多個(gè)Activity,每個(gè)Activity負(fù)責(zé)管理一個(gè)用戶界面。在界面中可以添加多個(gè)控
件,并編寫相應(yīng)的后臺代碼切換到其他界面。
2.Activity的生命周期是什么?
Activity的運(yùn)行從開始到結(jié)束會經(jīng)歷各種狀態(tài),并且會發(fā)生從一人狀態(tài)到另一個(gè)狀態(tài)的
切換,這樣的過程就叫作生命周期。
3.Activity的啟動模式是什么?
默認(rèn)情況下,每啟動一個(gè)新的Activity都會創(chuàng)建新的實(shí)例,并覆蓋在原Activity之上,
單擊返回按鈕,最上面的Activity會被銷毀,下面的Activity重新顯示。在開發(fā)中,可以為
每個(gè)Activity指定恰當(dāng)?shù)膯幽J剑瑏韽?fù)用Activity實(shí)例,優(yōu)化APP的效率和資源占用。
4.兩個(gè)Activity之間如何傳遞數(shù)據(jù)?
Android系統(tǒng)中,組件之間可以進(jìn)行消息傳遞或者數(shù)據(jù)傳遞,使用的是Intent。Intent不
僅可以開啟Activity,還可以在各個(gè)Activ讓y之間傳遞數(shù)據(jù)。
5.常用對話框有哪些,分別有什么作用?
如果需要可交互的對話框,可以使用安卓SDK提供的AlertDialog類構(gòu)建可交互的對話
框,讓用戶選擇和確認(rèn)信息。此外安卓SDK還提供了用于日期和時(shí)間選擇的對話框類
DatePickerDialog和TimePickerDialog,這兩個(gè)類繼承自AlertDialog類,使用上相對比較簡
單,安卓SDK還提供了ProgressDialog進(jìn)度條對話框,這種對話框運(yùn)行期間用戶不能與主
界面交互,不推薦使用。
第6章子窗口設(shè)計(jì)
l.Fragment的作用是什么?
Fragment是Android3.0后引入的一個(gè)新的API,它是一種可以嵌入在活動中的UI片段,
能夠讓程序更加合理和充分地利用大屏幕的空間,可以將其看成一個(gè)小型Activity,它又被
稱作Activity片段。
2.Fragment加載到Activity有幾種方式?
Fragment加載到Activity有兩種方式,分別是靜態(tài)加載和動態(tài)加載。使用Fragment時(shí)
只需要將Fragment作為一個(gè)控件在Activity的布局文件中進(jìn)行引用即可。除了可以在布局
文件中添加Fragment之外,還可以在Activity中通過代碼動態(tài)添加Fragment,這種方式更
加靈活。
3.Fragment的生命周期是什么?
Fragment生命周期和Activity的生命周期相似,F(xiàn)ragment比Activity多了幾種方法。
onAttach。:當(dāng)Fragment和Activity建立關(guān)聯(lián)時(shí)調(diào)用。
onCreateView():SFragment創(chuàng)建視圖時(shí)調(diào)用。
onActivityCreated():當(dāng)相關(guān)聯(lián)的Activity的OnCreate。方法已返回E寸調(diào)用。
onDestroyView():當(dāng)Fragment中的視圖被移除時(shí)調(diào)用。
onDetach。:當(dāng)Fragment和Activity取消關(guān)聯(lián)時(shí)調(diào)用。
4.Fragment和Activity之間如何傳遞數(shù)據(jù)?
從Activity向Fragment中傳遞數(shù)據(jù)可以Fragment.getArguments方法向Fragment傳遞
參數(shù)值,并且通過Fragment.getArguments方法獲取傳遞的參數(shù)值,
從Fragment向Actvity中傳遞數(shù)據(jù)采用接口回調(diào)的方式實(shí)現(xiàn)數(shù)據(jù)的傳遞。
5.FragmentPagerAdapter與FragmentStatePagerAdapter的區(qū)別?
FragmentPagerAdapter適用于頁面比較少的情況,F(xiàn)ragmentStatePagerAdapter適用于
頁面比較多的情況。
第7章數(shù)據(jù)訪問
18.Android中有幾種數(shù)據(jù)存儲方式以及各自特點(diǎn)?
Android平臺的數(shù)據(jù)存儲方式有SharedPreferences配置文件、文件存儲、SQLite數(shù)據(jù)
庫等。SharedPreferences是And-oid提供的用來存儲簡單配置信息的存儲方式,底層采用
XML文件存儲數(shù)據(jù)。文件存儲,用途更廣泛,可以存儲各種類型的數(shù)據(jù)。JSON是一種輕量
級數(shù)據(jù)交換格式,現(xiàn)在廣泛使用。SQLite數(shù)據(jù)庫提供關(guān)系數(shù)據(jù)的存儲,可以存儲大量數(shù)據(jù)。
19.Android中如何使用SharedPreferences類?
SharedPreferences是一種輕型的數(shù)據(jù)存儲方式,底層是基于XML文件存儲key-value
鍵值對數(shù)據(jù),通常用來存儲一些簡單的配置信息。其存儲位置在/data/data/v包
名〉/shared_prefs目錄下。SharedPreferences與其他存儲方式相比,使用上簡單、方便,但
只能存儲boolean、int、float、long和String五種簡單的數(shù)據(jù)類型。
SharedPreferences類對象用來獲取數(shù)據(jù),存儲和修改數(shù)據(jù)通過該對象獲取的Editor對
象來實(shí)現(xiàn)。
20.如何實(shí)現(xiàn)JSON數(shù)據(jù)解析的?
JSON是一種輕量級的數(shù)據(jù)交換格式,它的全稱為“JavaScriptObjectNotation",它是
基于JavaScript編程語言的一個(gè)工集,主要用來交換數(shù)據(jù),這種數(shù)據(jù)格式易于閱讀和編寫,
同時(shí)也易于機(jī)器解析和生成。
21.SQLite數(shù)據(jù)庫是如何創(chuàng)建的?
Android應(yīng)用開發(fā)時(shí),需要繼承SQLiteOpenHelper類定義自己的數(shù)據(jù)庫工具類,該工
具類用來創(chuàng)建數(shù)據(jù)庫、創(chuàng)建表、升級數(shù)據(jù)庫表的操作。自定義類時(shí),需要重寫
SQLiteOpenHelper類中的onCreate。方法、onllpgrade。方法和構(gòu)造方法。
22.ListView控件如何實(shí)現(xiàn)數(shù)據(jù)展示?
ListView是一個(gè)列表視圖,以垂直的形式列出需要顯示的列表項(xiàng)。列表項(xiàng)由很多Item組
成,每個(gè)Item的布局都是相同的,這個(gè)Item布局會單獨(dú)使用一個(gè)XML定義,需要使用適
配器將數(shù)據(jù)填充到Item布局文件中,進(jìn)行多條目顯示。
第8章廣播和內(nèi)容提供者
23.廣播是什么?為何引入廣播這一組件?
廣播是一種在應(yīng)用程序內(nèi)、應(yīng)用程序之間傳輸消息的機(jī)制,當(dāng)某些事件發(fā)生時(shí),Android
系統(tǒng)、應(yīng)用程序都可以使用廣播向其他應(yīng)用發(fā)送這些事件信息。
在應(yīng)用中添加廣播組件,可以接收Android系統(tǒng)或者其他應(yīng)用發(fā)出的廣播事件,然后根
據(jù)廣播事件做相應(yīng)的處理。
24.廣播分類有哪幾種?為何限制全局廣播的使用?
可以從機(jī)制、類型、來源對廣播進(jìn)行分類。按廣播機(jī)制分類,廣播分為無序廣播和有序
廣播兩種。按廣播類型分類,廣播分為全局廣播和本地廣播。按廣播來源分類,廣播可分為
自定義廣播和系統(tǒng)廣播兩類。
全局廣播可以被任何應(yīng)用接收到,容易引起安全性的問題。比如我們發(fā)送的一些攜帶關(guān)
鍵性數(shù)據(jù)的廣播可能被其他應(yīng)用程序截獲或者其他程序不停向我們的廣播接收者發(fā)送垃圾
廣播。
25.本地廣播的優(yōu)點(diǎn)是什么?
本地廣播只能夠在本應(yīng)用內(nèi)部進(jìn)行傳遞,不用擔(dān)心隱私數(shù)據(jù)泄露,其他應(yīng)用程序也無法
將廣播發(fā)送到我們程序內(nèi)部,造成安全隱患。相比系統(tǒng)內(nèi)發(fā)送全局廣播,本地剛播更安全更
高效。
26.內(nèi)容提供者的作用是什么?
為了方便在不同應(yīng)用間共享數(shù)據(jù),Android系統(tǒng)為開發(fā)者提供了內(nèi)容提供者組件,該組
件定義了一套接口用以操作共享數(shù)據(jù),開發(fā)者通過重寫相關(guān)方法等方式,可以將自己的數(shù)據(jù)
開放給其他應(yīng)用。
27.如何為其他應(yīng)用提供數(shù)據(jù)?如何獲取其他應(yīng)用提供的數(shù)據(jù)?
要為其他應(yīng)用提供數(shù)據(jù),開發(fā)者需要在自己的項(xiàng)目中繼承ConteniProvider類自定義類,
并重寫父類中操作數(shù)據(jù)的相關(guān)抽象方法,就可以使用自己的數(shù)據(jù)源提供數(shù)據(jù)操作功能,可以
提供查詢、增加、修改、刪除等功能。在自定義好ConteniProvider類后,還需在清單文件
中注冊自定義的內(nèi)容提供者組件,并定義相關(guān)訪問權(quán)限。
在Activity當(dāng)中通過getContentResolver。方法得到當(dāng)前應(yīng)用的ContentResolver實(shí)例。
然后用它的增、刪、改、查成員方法操作目標(biāo)Contentprovider提供的數(shù)據(jù)即可。
ContentResolver類的增、刪、改、查成員方法和Contentprovider類的增、刪、改、查成員
方法對應(yīng),一方是數(shù)據(jù)請求方、一方是數(shù)據(jù)供給方。
28.本地廣播是否可以與內(nèi)容觀察者功能結(jié)合,解決應(yīng)用內(nèi)通訊問題,或?qū)崿F(xiàn)某種功能?
本地廣播與內(nèi)容觀察者功能結(jié)合可以解決應(yīng)用內(nèi)通訊問題。內(nèi)容觀察者可以監(jiān)聽內(nèi)容提
供者的數(shù)據(jù)是否發(fā)生變化,當(dāng)被監(jiān)聽的內(nèi)容提供者數(shù)據(jù)發(fā)生變化時(shí),就會回調(diào)自定義
Contentobserver類的onChange。方法,訪問和操作目標(biāo)數(shù)據(jù)。
第9章服務(wù)
29.服務(wù)是什么?使用服務(wù)的好處是什么?
服務(wù)(Service)是一種在后臺運(yùn)行的代碼組件。服務(wù)由其他組件啟動,服務(wù)啟動后在后臺
運(yùn)行,即使啟動服務(wù)的組件已銷毀,服務(wù)也不受影響。
使用服務(wù)的好處是:服務(wù)可以在后臺長期運(yùn)行,即使應(yīng)用退出后,服務(wù)還可以正常運(yùn)行。
比如音樂播放功能往往放在服務(wù)中運(yùn)行,實(shí)現(xiàn)后臺播放。需要接收網(wǎng)絡(luò)數(shù)據(jù)的應(yīng)用,也可以
放在服務(wù)中實(shí)現(xiàn)監(jiān)聽網(wǎng)絡(luò)數(shù)據(jù)的功能,即使應(yīng)用窗口退出了,也能實(shí)現(xiàn)實(shí)時(shí)在線功能。
30.啟動服務(wù)方式有哪幾種?
啟動服務(wù)有兩種方式:啟動方式使用服務(wù)和綁定方式使用服務(wù)。
31.如果需要與服務(wù)互動,使用哪種服務(wù)比較合適?
如果需要與服務(wù)互動,綁定方式使用服務(wù)比較合適。因?yàn)榫哂薪壎芰Φ姆?wù)需要提供
綁定接口,其他組件通過綁定服務(wù)的接口,可以與服務(wù)交互,為服務(wù)發(fā)送指令或者從服務(wù)獲
得結(jié)果。
32.前臺服務(wù)是什么?
前臺服務(wù)是一種可以被用戶觀察到的服務(wù),能顯示一些信息、并與用戶進(jìn)行一些簡單交
互操作(如音樂播放的控制、天氣狀態(tài)顯示等)。
33.前臺服務(wù)如何與主界面互動,前臺服務(wù)如何啟動應(yīng)用?
每個(gè)前臺服務(wù)都必須要在通知欄顯示一個(gè)通知(notification)o用戶可以感知到app的
前臺服務(wù)正在運(yùn)行。這個(gè)通知(notification)默認(rèn)是不能移除的。服務(wù)停止后,通知會被系
統(tǒng)移除。
Android8.0引入了一種全新的方法,即Context.startForegroundService(),以在前臺啟
動新服務(wù)。
第10章線程與消息處理
34.線程是什么?與進(jìn)程、應(yīng)用程序有何區(qū)別?
線程是一種輕量級任務(wù),從靜態(tài)視角看就是一段程序代碼。線程包含在進(jìn)程之中,是操
作系統(tǒng)能夠調(diào)度的最小單位。
一個(gè)進(jìn)程中可以有很多可以并發(fā)執(zhí)行的線程。與進(jìn)程相比,線程代碼更簡潔,線程的管
理比進(jìn)程的管理消耗的資源要少得多,并且可以共享進(jìn)程資源。
一個(gè)應(yīng)用程序往往會有很多功能,這些功能往往需要并行執(zhí)行,二匕如QQ,可以同時(shí)聽
音樂、聊天、看股票等,我們稱實(shí)現(xiàn)這些功能的代碼塊為子任務(wù),這些子任務(wù)往往會用線程
實(shí)現(xiàn)。
35.使用Java線程類編寫線程程序有幾種方式?有何區(qū)別?
使用Java線程類編寫線程程序有兩種種方式,可以通過繼承Thread類重寫run()方法
的方式創(chuàng)建線程;也可以通過實(shí)現(xiàn)Runnable接口重寫run()方法編寫線程代碼,然后用
Thread類管理線程的運(yùn)行。
繼承Thread類創(chuàng)建線程方式最簡單,實(shí)現(xiàn)Runnable接口方式創(chuàng)建線程代碼更靈活,因
為實(shí)現(xiàn)Runnable接口的類可以再繼承其他類。
36.Handler消息機(jī)制如何運(yùn)轉(zhuǎn)?send方式和post方式有何區(qū)別?
Handler消息機(jī)制通過MessageQueue消息隊(duì)列、Message消息、Handler消息處理者
和Looper消息分派者的協(xié)同工作來實(shí)現(xiàn)。其中MessageQueue是消息機(jī)制的運(yùn)轉(zhuǎn)中心,用
來儲存各種消息。Handler用來發(fā)送消息和接收消息。Message是事件信息的攜帶者。Looper
不停地監(jiān)測消息隊(duì)列里的Message,將Message派發(fā)給Handler消息處理者。
send方式是在工作線程中處理完耗時(shí)操作后調(diào)用handler的sendMessage(message)
把Message對象發(fā)送給主線程,在主線程中重寫handlerMessage()方法,判斷接收到的
消息進(jìn)行更新UI的操作;而post方式傳遞的是一個(gè)Runnable對象,更新UI的操作也是在
這個(gè)Runnable的run方法中進(jìn)行的,也就是說run方法中的代碼是執(zhí)行在主線程中的,雖
然它是寫在工作線程中,主線程在接收到消息后自動執(zhí)行Runnable的run方法中的代碼。
37.在線程中支持消息機(jī)制需要做哪些工作?
在線程中支持消息機(jī)制,按以下步驟添加消息機(jī)制相關(guān)代碼即可。
第一步,在線程類內(nèi)部,繼承Handler類定義線程的Handler消息處理類,該類中重寫
handleMessage。方法來處理發(fā)給線程的消息。
第二步,在線程的run。方法中調(diào)用Looper.prepare。方法,該方法會為線程創(chuàng)建Looper
對象和MesssageQueue消息隊(duì)列對象,這兩個(gè)對象會與當(dāng)前線程綁定。
第三步,在調(diào)用Looper.prepare。方法代碼之后,使用第一步的自定義Handler類創(chuàng)建
該線程的Handler■對象,該對象會自動綁定到第二步中創(chuàng)建的線程Looper對象上。注意創(chuàng)
建Handler對象的代碼不能在調(diào)用Loopcr.prcporc()方法代碼之前。
最后,調(diào)用Looper.loop()方法,開啟消息機(jī)制。該方法后會阻塞程序的運(yùn)行,因?yàn)樵摲?/p>
法的內(nèi)部是無限循環(huán)的,該方法通過循環(huán)來持續(xù)監(jiān)測該線程的MesssageQueue隊(duì)列是否有
消息,若有就取出一條消息派發(fā)給線程的Handler對象處理。
38.Android提供的幾個(gè)線程開發(fā)工具類的開發(fā)步驟是什么?
Android系統(tǒng)提供的HandlerThread類,開發(fā)步驟如下:
1)先用HandlerThread類倉健一個(gè)對象實(shí)例。
2)使用上步的對象實(shí)例的start。方法來啟動線程。
3)自定義Handler類并創(chuàng)建該類的對象實(shí)例,將對象綁定到上步已啟動的線程對象的
Looper對象上,這樣Handler對象中的handleMessage。方法運(yùn)行就會在后臺線程中回調(diào),
也就相當(dāng)于將后臺任務(wù)代碼放入后臺線程中執(zhí)行了。
4)用自定義Handler類的對象向后臺線程發(fā)消息,消息就會由自定義Handler類中的
handleMessage()^法處理。
Aruhoid系統(tǒng)提供了異步任務(wù)AsyncTask類,開發(fā)步驟如下:
1)繼承AsyncTask定義自己的類,根據(jù)需求實(shí)現(xiàn)核心方法。
2)用自定義的異步任務(wù)類創(chuàng)建對象。
3)調(diào)用該對象的execute。方法執(zhí)行異步任務(wù),如要取消任務(wù)的執(zhí)行則調(diào)用cancel。方
法取消異步任務(wù)。
Android系統(tǒng)提供了異步任務(wù)IntentService類,開發(fā)步驟如下:
1)繼承IntentService類實(shí)現(xiàn)自己的類,重寫onHandlelntent。方法,該方法有一個(gè)
Intent類型的參數(shù),該參數(shù)由startService。方法啟動服務(wù)時(shí)傳入。
2)在清單文件中注冊服務(wù)。
3)使用startService。方法啟動服務(wù),通過Intent對象傳入任務(wù)參數(shù)。
第11章網(wǎng)絡(luò)編程
39.如何獲取手機(jī)網(wǎng)絡(luò)狀態(tài)?
使用ConnectivityManager連接管理類獲取Networkinfo類對象。再根據(jù)該對象中的網(wǎng)
絡(luò)類型,獲取該類型網(wǎng)絡(luò)的服務(wù)類對象,比如移動網(wǎng)絡(luò)是TelephonyManager類對象,WIFI
網(wǎng)絡(luò)的是WifiManager類對象。
40.HttpURLConnection網(wǎng)絡(luò)編程的優(yōu)缺點(diǎn)是什么?
HttpURLConnection是一種多用途、輕量極的HTTP客戶端,使用它來進(jìn)行HTTP操作
可以適用于大多數(shù)的應(yīng)用程序。雖然HttpURLConnection的API提供的比較簡單,但是同時(shí)
這也使得我們可以更加容易地去使用和擴(kuò)展它。比較輕便,靈活,易于擴(kuò)展。
在android2.2及以下版本中HttpURLConnection存在著一些bug,所以建議在android
2.3以后使用HttpURLConnection,2.3之前使用HttpCIiento
41.如何在Android應(yīng)用中使用HttpURLConnection?如何與UI界面交互?
HttpURLConnection類是使用需要以下幾個(gè)步驟:
1)創(chuàng)建URL對象并設(shè)置網(wǎng)址,調(diào)用openConnection。方法創(chuàng)建HttpURLConnection
對象。
2)按順序設(shè)置HttpURLConnection對象的參數(shù)。
3)使用HttpURLConnection對象的connect。方法建立連接。
4)若連接成功,使用連接對象的輸入輸出流收發(fā)數(shù)據(jù)。
5)使用完畢,關(guān)閉連接,釋放資源。
在Android中使用網(wǎng)絡(luò)連接功能,不能在UI主線程中進(jìn)行,需要放在后臺線程中。因
此需要使用AsyncTask類構(gòu)造后臺線程訪問網(wǎng)絡(luò)的程序,通過AsyncTask類的
onPostExecutefStringresult)方法將訪問結(jié)果顯示在III界面上。
42.GET方式和POST方式訪問服務(wù)器有何區(qū)別?
POST請求方式跟GET請求方式編程步驟大同小異,不同點(diǎn)是POST方式在連接成功后,
可以向服務(wù)器發(fā)送數(shù)據(jù),比如發(fā)送參數(shù)、上傳文件。
43.Volley框架的優(yōu)點(diǎn)是什么?該框架可以適用于所有類型的網(wǎng)絡(luò)開發(fā)嗎?
Volley框架封裝了HTTP協(xié)議通信和后臺線程,簡單易用,并且優(yōu)化了網(wǎng)絡(luò)訪問性能,
適合頻繁、小數(shù)據(jù)量的網(wǎng)絡(luò)訪問。
Volley框架不適用于所有類型的網(wǎng)絡(luò)開發(fā),適合頻繁、小數(shù)據(jù)量的網(wǎng)絡(luò)訪問,不適合大
量數(shù)據(jù)傳輸?shù)木W(wǎng)絡(luò)訪問。
第12章WebView控件使用
44.WebView控件是什么?使用該控件可以完成什么功能?
WebView控件是一個(gè)微型瀏覽器,包含一個(gè)瀏覽器的基本功能,例如:滾動、縮放、前
進(jìn)、后退等功能,還可以通過該控件與網(wǎng)頁交互,實(shí)現(xiàn)混合開發(fā)。
45.如何定制WebView控件功能?
要定制WebView控件功能,需要通過三個(gè)類WebSettingssWebViewClient和
WebChromeClient來實(shí)現(xiàn)。WebSettings類用來配置控件的功能和行為。WebViewClient類
可以讓W(xué)ebView控件具備處理網(wǎng)頁中的事件的能力。WebChromeClient類進(jìn)一步拓展了
WebView控件處理網(wǎng)頁內(nèi)事件的能力,比如讓Android程序與網(wǎng)頁內(nèi)的Javascript程序交
互。
46.如何通過WebView控件獲取網(wǎng)頁中的事件?
繼承WebViewClient類該類定義自己的類,并重寫相關(guān)方法,這些方法一般是回調(diào)方
法,當(dāng)網(wǎng)頁中的事件發(fā)生后,會回調(diào)這些方法,開發(fā)者可以在這些方法中加入自己的代碼,
完成事件的捕獲和處理。自定義類完成后,創(chuàng)建該類的對象,然后調(diào)用WebView控件的
setWebViewClient()方法,為WebView控件設(shè)置關(guān)聯(lián)該對象。WebChromeClient類使用同
理C
47.如何通過WebView控件獲取網(wǎng)頁內(nèi)容?
在WebView控件中,可以監(jiān)聽長按事件,捕獲選中的網(wǎng)頁內(nèi)容。要實(shí)現(xiàn)這個(gè)功能,需
要用WebView控件的setOnLongClickListener()方法設(shè)置長按監(jiān)聽事件,監(jiān)聽事件類需要實(shí)
現(xiàn)View.OnLongClickListener接口,重寫該接口中的。nLongClick()方法,該方法參數(shù)中可以
獲得WebView控件返回的HitTesiResult類對象,該對象中攜帶了選中內(nèi)容信息。
48.Android原生代碼如何與網(wǎng)頁代碼交互?
使用WebView控件調(diào)用網(wǎng)頁上的JavaScript代碼有兩種方式通過loadUrl()方法調(diào)用;
通過evaluateJavascript()方法調(diào)用。JavaScript調(diào)用Android代碼有三種方式:通過
WebViewClient對象的shouldOveirideUrlLoading()方法攔截url方式;通過WebView控件
的addJavascriptlnterface()將Android對象映射到JavaScript代碼方式;通過
WebChromeClient對象攔截JS對話框方式。
第13章傳感器與定位
49.Android手機(jī)、平板上一般都集成什么傳感器?
Android設(shè)備中一般都會內(nèi)置一些傳感器,為人們提供輔助功能,比如測量運(yùn)動、屏幕
方向、位置、環(huán)境等,不同的設(shè)備提供的傳感器數(shù)量不一樣,一些常用傳感器在Android設(shè)
備上都會提供。
50.傳感器的坐標(biāo)系有幾種?有何區(qū)別?
傳感器框架使用標(biāo)準(zhǔn)的3軸坐標(biāo)系來表示傳感器測量的數(shù)據(jù)值,對于大多數(shù)傳感器,以
屏幕為基準(zhǔn)定義坐標(biāo)系,X軸為水平向右延伸,Y軸為垂直向上延伸,Z軸為垂直于屏幕向
外延伸。
有些傳感器,如旋轉(zhuǎn)矢量傳感器,坐標(biāo)系以地球面為參照,X軸與地面相切,并大約指
向東。Y軸與地面相切,并指向地磁北極。Z軸指向天空并與地平面垂直。
51.傳感器有哪幾類?傳感器的數(shù)據(jù)如何獲???
Android平臺支持的傳感器分為三類:環(huán)境傳感器、動態(tài)傳感器和位置傳感器。要獲得
傳感數(shù)據(jù),需要注冊傳感器監(jiān)聽器,監(jiān)聽傳感器事件。自定義傳感器監(jiān)聽器類時(shí)需要實(shí)現(xiàn)
SensorEventListener接口,并重寫該接口的兩個(gè)方法onAccuracyChanged。精度變化方法和
onSensorChanged。傳感器數(shù)據(jù)變化方法。當(dāng)傳感器發(fā)生相應(yīng)的事件時(shí),會回調(diào)這兩個(gè)方法,
開發(fā)者就可以在這兩個(gè)方法中獲取相應(yīng)的數(shù)據(jù)。
52.如何使用Android的定位功能?
Android系統(tǒng)為開發(fā)定位服務(wù)提供了開發(fā)框架,利用開發(fā)框架和工具類,可以方便地獲
取位置數(shù)據(jù)。獲取GPS定位數(shù)據(jù)開發(fā)主要有4步:配置權(quán)限、獲取LocationManager位置
管理者對象實(shí)例、獲取GPS位置提供者、自定義位置監(jiān)聽器并注冊,通過LocationListener
接口方法獲得位置信息。
53.定位數(shù)據(jù)從哪產(chǎn)生?沒有內(nèi)置導(dǎo)航芯片的手機(jī)可以使用定位功能嗎?
Android系統(tǒng)中提供
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工程轉(zhuǎn)包合同范本
- 個(gè)人房屋抵押借款合同協(xié)議
- 代運(yùn)營服務(wù)合同
- 新能源儲能電站投資建設(shè)合同
- 智能光伏發(fā)電技術(shù)研發(fā)投資合同
- 企業(yè)社會責(zé)任項(xiàng)目投資合同
- 2025年專業(yè)物流運(yùn)輸貨運(yùn)正規(guī)合同(三篇)
- 2025年個(gè)人向個(gè)人按月付息借款合同范文(2篇)
- 2025年個(gè)人借款保證合同樣本(三篇)
- 2025年度鋁窗安裝工程分包合同3篇
- 2025年1月 浙江首考英語試卷
- 資本金管理制度文件模板
- 2025年急診科護(hù)理工作計(jì)劃
- 高中家長會 高二寒假線上家長會課件
- 2024-2025學(xué)年山東省聊城市高一上學(xué)期期末數(shù)學(xué)教學(xué)質(zhì)量檢測試題(附解析)
- 違規(guī)行為與處罰管理制度
- 個(gè)人教師述職報(bào)告錦集10篇
- 四川省等八省2025年普通高中學(xué)業(yè)水平選擇性考試適應(yīng)性演練歷史試題(含答案)
- 2024版《糖尿病健康宣教》課件
- 2024CSCO結(jié)直腸癌診療指南解讀
- 二年級上每日一練(豎式+口算+應(yīng)用題)已排版直接打印
評論
0/150
提交評論