版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、Android應用開發(fā)AndroidAndroidAndroid環(huán)境配置和開發(fā)Android應用程序構(gòu)成如何開發(fā)一個例子目錄Android應用開發(fā)AndroidAndroid平臺架構(gòu)平臺架構(gòu)JNIJAVAC/匯編Android應用開發(fā)簡介 LinuxLinux核心核心:Android依賴來提供核心的服務,例如存儲管理、進程(Process)管理等 Android RuntimeAndroid Runtime:Java語言層級的Virtual Machine LibrariesLibraries:Android里已經(jīng)提供的C/C+組件。例如,SQLite、OpenGL 3D等。 應用應用框架框架
2、(Application Framework,)(Application Framework,):這是結(jié)合Applications和Libraries的主架構(gòu),讓Libraries組件能不斷地為Applications所重復使用 應用程序應用程序(Applications)(Applications):根據(jù)用戶的期望而將AF的組件及Libraries組件組合而成的服務。Android應用開發(fā)用漢堡比喻用漢堡比喻Android 平臺架構(gòu)平臺架構(gòu)Android應用開發(fā)Android環(huán)境配置和開發(fā)Android平臺架構(gòu)Android應用程序構(gòu)成如何開發(fā)一個例子目錄Android應用開發(fā)如何安裝 An
3、droid SDK 和Eclipse 插件所需開發(fā)環(huán)境所需開發(fā)環(huán)境:JDK 5 或 JDK 6 (僅有JRE不夠) Eclipse 3.5 (galileo)下載下載ADT 的的Eclipse 插件插件 安裝安裝 Eclipse 插件插件 (ADT)啟動 Eclipse,選擇 Help Install New Software,在出現(xiàn)的對話框里,點擊Add按鈕,在對話框的name一欄輸入“ADT”, 然后點擊Archive.,瀏覽和選擇已經(jīng)下載的ADT插件插件壓縮文件。 點擊 OK.。返回可用軟件的視圖,你會看到這個插件,然后選擇Developer Tools (會選中下面的“Android
4、Developer Tools”和 “Android Editors“),點擊 Next,最后重啟 Eclipse。下載下載Android SDK:下載完SDK后,把.zip文件解壓到你電腦上合適位置。啟動 Eclipse,選擇window-preferences,在打開的視圖左邊點擊android,在右邊的SDK Location中選擇Android SDK所在位置。Android應用開發(fā)開發(fā)第一個Android應用打開Eclipse,新建項目(點擊FileNewProject),在項目列表中展開Android目錄,選擇Android Project,如下圖:Android應用開發(fā)開發(fā)第一個
5、Android應用Android應用開發(fā)開發(fā)第一個Android應用點擊”finish”即可完成項目的創(chuàng)建,創(chuàng)建后的項目已經(jīng)是一個可運行的Android應用,我們可以通過下面方式運行此應用:點擊工具欄上手機形狀的虛擬設備管理器(簡稱“AVD“),如下:Android應用開發(fā)開發(fā)第一個Android應用在打開的虛擬設備管理器中創(chuàng)建一個虛擬手機:Android應用開發(fā)開發(fā)第一個Android應用在項目上右鍵點擊run as Android application,如下圖:Android應用開發(fā)Android應用程序架構(gòu)src/ java原代碼存放目錄原代碼存放目錄gen/ 自動生成目錄自動生成目錄
6、gen 目錄中存放所有由目錄中存放所有由Android開發(fā)工具自動生成的文件。目錄中最重要的就是文件。開發(fā)工具自動生成的文件。目錄中最重要的就是文件。 這個文件這個文件由由Android開發(fā)工具自動產(chǎn)生的。開發(fā)工具自動產(chǎn)生的。Android開發(fā)工具會自動根據(jù)你放入開發(fā)工具會自動根據(jù)你放入res目錄的目錄的xml界面文界面文件、圖標與常量,同步更新修改文件。正因為文件是由開發(fā)工具自動生成的,所以我們應避件、圖標與常量,同步更新修改文件。正因為文件是由開發(fā)工具自動生成的,所以我們應避免手工修改。在應用中起到了字典的作用,它包含了界面、圖標、常量等各種資源的免手工修改。在應用中起到了字典的作用,它包
7、含了界面、圖標、常量等各種資源的id,通,通過,應用可以很方便地找到對應資源。另外編繹器也會檢查列表中的資源是否被使用到,沒過,應用可以很方便地找到對應資源。另外編繹器也會檢查列表中的資源是否被使用到,沒有被使用到的資源不會編繹進軟件中,這樣可以減少應用在手機占用的空間。有被使用到的資源不會編繹進軟件中,這樣可以減少應用在手機占用的空間。res/ 資源資源(Resource)目錄目錄在這個目錄中我們可以存放應用使用到的各種資源,如在這個目錄中我們可以存放應用使用到的各種資源,如xml界面文件,圖片或數(shù)據(jù)。具體請看界面文件,圖片或數(shù)據(jù)。具體請看ppt下方備注欄。下方備注欄。AndroidMani
8、fest.xml 功能清單文件功能清單文件 這個文件列出了應用程序所提供的功能,在這個文件中,你可以指定應用程序使用到的服務這個文件列出了應用程序所提供的功能,在這個文件中,你可以指定應用程序使用到的服務(如如 服務、互聯(lián)網(wǎng)服務、短信服務、服務、互聯(lián)網(wǎng)服務、短信服務、GPS服務等等服務等等)。另外當你新添加一個。另外當你新添加一個Activity的時候,也需的時候,也需要在這個文件中進行相應配置,只有配置好后,才能調(diào)用此要在這個文件中進行相應配置,只有配置好后,才能調(diào)用此Aperties 項目環(huán)境信息,一般是不需要修改此文件項目環(huán)境信息,一般是不需要修改此
9、文件Android應用開發(fā)目錄Android環(huán)境配置和開發(fā)Android平臺架構(gòu)Android應用程序構(gòu)成如何開發(fā)一個例子Android應用開發(fā)Android應用程序構(gòu)成ActivityServiceBroadcast ReceiverContent ProviderIntentAndroid應用開發(fā)ActivityA visual user interface通過view管理UI每一個有用戶界面的應用至少包含一個activity一個應用可以有多個activity,其中一個作為main activity用于啟動顯示Activity通過startActivity或startActivityFor
10、Result啟動另外的activityAndroid應用開發(fā)Activity生命周期 Activity通過onCreate被創(chuàng)建 當一個activity失去焦點,該activity將進入pause狀態(tài),系統(tǒng)在內(nèi)存不足時會將其終止 當一個activity被另一個activity覆蓋,該activity將進入stop狀態(tài),系統(tǒng)在需要內(nèi)存的時候會將其終止Android應用開發(fā)Intent類似于消息、事件通知Intent構(gòu)成:action、category、dataActivity、Service、broadcast receiver之間的橋梁IntentactivityserviceBroadcas
11、t receiverAndroid應用開發(fā)Intent 兩類intent: 顯式:指定具體的目標組件處理 startActivity(new Intent(ActivityLifecycle.this, AnotherActivity.class); 隱式:由系統(tǒng)接受并決定如何處理 startActivity(new Intent(Intent.ACTION_DIAL); 在中定義activity、service、broadcast receiver接受的intentAndroid應用開發(fā)IntentIntent filter: action、category、dataframeworkCom
12、ponent nameActionDataCategoryintentcomponentactivityserviceBroadcast receiverAndroid應用開發(fā)實例action - DIALdata - tel:action - VIEWdata - Android應用開發(fā)Service沒有UI,啟動之后一直運行于后臺例子:音樂播放器與應用程序的其他模塊(例如activity)一同運行于主線程中通過startService或bindService創(chuàng)建Service通過stopService或stopSelf終止Service一般的,在activity中啟動和終止serviceA
13、ndroid應用開發(fā)Service生命周期Context.stopService()Serivce.stopSelf()Context.startService()Context.bindService()Android應用開發(fā)服務服務-Service-ServiceAndroid中的服務和windows中的服務是類似的東西,服務一般沒有用戶操作界面,它運行于系統(tǒng)中不容易被用戶發(fā)覺,可以使用它開發(fā)如監(jiān)控之類的程序。服務的開發(fā)比較簡單,如下:第一步:繼承Service類public class SMSService extends Service Android應用開發(fā)服務服務-Service-
14、Service第二步:在文件中的節(jié)點里對服務進行配置:服務不能自己運行,需要通過調(diào)用Context.startService()或Context.bindService()方法啟動服務。這兩個方法都可以啟動Service,但是它們的使用場合有所不同。使用startService()方法啟用服務,調(diào)用者與服務之間沒有關連,即使調(diào)用者退出了,服務仍然運行。使用bindService()方法啟用服務,調(diào)用者與服務綁定在了一起,調(diào)用者一旦退出,服務也就終止。如果打算采用Context.startService()Context.startService()方法啟動服務方法啟動服務,在服務未被創(chuàng)建時,系
15、統(tǒng)會先調(diào)用服務的onCreate()方法,接著調(diào)用onStart()方法。如果調(diào)用startService()方法前服務已經(jīng)被創(chuàng)建,多次調(diào)用startService()方法并不會導致多次創(chuàng)建服務,。采用startService()方法啟動的服務,只能調(diào)用Context.stopService()方法結(jié)束服務,服務結(jié)束時會調(diào)用onDestroy()方法。Android應用開發(fā)服務服務-Service-Service如果打算采用Context.bindService()Context.bindService()方法啟動服務方法啟動服務,在服務未被創(chuàng)建時,系統(tǒng)會先調(diào)用服務的onCreate()方法,
16、接著調(diào)用onBind()方法。這個時候調(diào)用者和服務綁定在一起,調(diào)用者退出了,系統(tǒng)就會先調(diào)用服務的onUnbind()方法,接著調(diào)用onDestroy()方法。如果調(diào)用bindService()方法前服務已經(jīng)被綁定,多次調(diào)用bindService()方法并不會導致多次創(chuàng)建服務及綁定(也就是說onCreate()和onBind()方法并不會被多次調(diào)用)。如果調(diào)用者希望與正在綁定的服務解除綁定,可以調(diào)用unbindService()方法,調(diào)用該方法也會導致系統(tǒng)調(diào)用服務的onUnbind()-onDestroy()方法。Android應用開發(fā)服務服務-Service-Service服務常用生命周期回調(diào)
17、方法如下:onCreate() 該方法在服務被創(chuàng)建時調(diào)用,該方法只會被調(diào)用一次,無論調(diào)用多少次startService()或bindService()方法,服務也只被創(chuàng)建一次。onDestroy()該方法在服務被終止時調(diào)用。l 與采用Context.startService()方法啟動服務有關的生命周期方法onStart() 只有采用Context.startService()方法啟動服務時才會回調(diào)該方法。該方法在服務開始運行時被調(diào)用。多次調(diào)用startService()方法盡管不會多次創(chuàng)建服務,但onStart() 方法會被多次調(diào)用。l 與采用Context.bindService()方法啟
18、動服務有關的生命周期方法onBind()只有采用Context.bindService()方法啟動服務時才會回調(diào)該方法。該方法在調(diào)用者與服務綁定時被調(diào)用,當調(diào)用者與服務已經(jīng)綁定,多次調(diào)用Context.bindService()方法并不會導致該方法被多次調(diào)用。onUnbind()只有采用Context.bindService()方法啟動服務時才會回調(diào)該方法。該方法在調(diào)用者與服務解除綁定時被調(diào)用。Android應用開發(fā)采用采用startService()startService()啟動服務啟動服務采用Context.startService()方法啟動服務的代碼如下:public class H
19、elloActivity extends Activity Override public void onCreate(Bundle savedInstanceState) . Button button =(Button) this.findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener()public void onClick(View v) Intent intent = new Intent(HelloActivity.this, SMSService.class);startServi
20、ce(intent);); Android應用開發(fā)采用采用bindService()()啟動服務啟動服務采用Context.startService()方法啟動服務的代碼如下:public class HelloActivity extends Activity ServiceConnection conn = new ServiceConnection() public void onServiceConnected(ComponentName name, IBinder service) public void onServiceDisconnected(ComponentName nam
21、e) ; Override public void onCreate(Bundle savedInstanceState) Button button =(Button) this.findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener()public void onClick(View v) Intent intent = new Intent(HelloActivity.this, SMSService.class);bindService(intent, conn, Context.BIN
22、D_AUTO_CREATE);/unbindService(conn);/解除綁定); Android應用開發(fā)何為Content provider什么是Content provider?Content Provider 是Android應用程序的四大組成部分之一是android中的跨應用訪問數(shù)據(jù)機制為何需要content provider?Android中每一個app的資源是私有的app通過content provider和其他app共享私有數(shù)據(jù)Android應用開發(fā)如何使用content provider通過content resolver訪問Context.getContentResolv
23、er()appContentResolverContentProvider AContentProvider BContentResolverContentResolverappappAndroid應用開發(fā)如何使用content provider URI定位資源 content:/contacts/people 類似關系數(shù)據(jù)庫的訪問方式 以二維數(shù)據(jù)表的格式暴露數(shù)據(jù),缺省都包含_id字段delete(Uri url, String where, String selectionArgs)insert(Uri url, ContentValues values)query(Uri uri, Str
24、ing projection, String selection, String selectionArgs, String sortOrder)update(Uri uri, ContentValues values, String where, String selectionArgs)Android應用開發(fā)定義自己的content providerAndroid應用開發(fā)Android的存儲一般的,應用程序的數(shù)據(jù)(包括文件)都是私有的四種持久存儲方式Preferences類似properties,xml文件FilesDatabaseSQLiteNetworkAndroid應用開發(fā)Broad
25、cast receiver接收和處理android的廣播消息Android的廣播機制系統(tǒng)事件例如變換時區(qū)、電量低等應用程序發(fā)出廣播消息:sendBroadCast廣播消息:intentandroidappBroadcast receiverSend Send broadcastbroadcastAndroid應用開發(fā)創(chuàng)建Broadcast Receiver 實現(xiàn)一個BroadcastReceiver public class MyAndroidReceiver extends BroadcastReceiver override onReceive(Context context, Inten
26、ts Intents) 注冊BroadcastReceiver 在文件當中進行注冊 在代碼當中直接進行注冊 IntentsFilter filter = new IntentsFilter(NEW_BROADCAST );MyAndroidReceiver MyAndroidReceiver = new MyAndroidReceiver();registerReceiver(MyAndroidReceiver , filter);Android應用開發(fā)Broadcast receiver生命周期Broadcast receiver對象在onReceive返回后被銷毀onReceive中不適合
27、處理異步過程。例如彈出對話框與用戶交互,可使用消息欄替代。Android應用開發(fā)Android權(quán)限控制 在中描述一個app的權(quán)限 例如: 權(quán)限舉例(參考android. Manifest.permission) Manifest.permission)權(quán)限名稱權(quán)限名稱權(quán)限描述權(quán)限描述接收短信android.permission.RECEIVE_SMS撥打電話android.permission.CALL_PHONE系統(tǒng)啟動完畢通知android.permission.RECEIVE_BOOT_COMPLETED讀取聯(lián)系人信息android.permission.READ_CONTACTS修改聯(lián)
28、系人信息android.permission.WRITE_CONTACTSAndroid應用開發(fā)目錄Android環(huán)境配置和開發(fā)Android平臺架構(gòu)Android應用程序構(gòu)成如何開發(fā)一個例子Android應用開發(fā)從從InternetInternet獲取數(shù)據(jù)獲取數(shù)據(jù)利用HttpURLConnection對象,我們可以從網(wǎng)絡中獲取網(wǎng)頁數(shù)據(jù).URL url = new URL();HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setConnectTimeout(6* 1000);/設置連接超時if (c
29、onn.getResponseCode() != 200) throw new RuntimeException(請求url失敗);InputStream is = conn.getInputStream();/得到網(wǎng)絡返回的輸入流String result = readData(is, GBK);conn.disconnect();System.out.println(result);/第一個參數(shù)為輸入流,第二個參數(shù)為字符集編碼public static String readData(InputStream inSream, String charsetName) throws Excep
30、tionByteArrayOutputStream outStream = new ByteArrayOutputStream();byte buffer = new byte1024;int len = -1;while( (len = inSream.read(buffer) != -1 )outStream.write(buffer, 0, len);byte data = outStream.toByteArray();outStream.close();inSream.close();return new String(data, charsetName);Android應用開發(fā)從從
31、InternetInternet獲取數(shù)據(jù)獲取數(shù)據(jù)利用HttpURLConnection對象,我們可以從網(wǎng)絡中獲取文件數(shù)據(jù).URL url = new URL();HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setConnectTimeout(6* 1000);if (conn.getResponseCode() != 200) throw new RuntimeException(請求url失敗);InputStream is = conn.getInputStream();readAs, Img
32、269812337.jpg); public static void readAs inSream, ) throws Exception outStream = new (file);byte buffer = new byte1024;int len = -1;while( (len = inSream.read(buffer) != -1 )outStream.write(buffer, 0, len); outStream.close();inSream.close();Android應用開發(fā)向向InternetInternet發(fā)送請求參數(shù)發(fā)送請求參數(shù)利用HttpURLConnecti
33、on對象,我們可以向網(wǎng)絡發(fā)送請求參數(shù).String requestUrl = ;Map requestParams = new HashMap();requestParams.put(age, 12);requestParams.put(name, 中國); StringBuilder params = new StringBuilder();for(Map.Entry entry : requestParams.entrySet()params.append(entry.getKey();params.append(=);params.append(URLEncoder.encode(ent
34、ry.getValue(), UTF-8);params.append(&);if (params.length() 0) params.deleteCharAt(params.length() - 1);byte data = params.toString().getBytes();URL realUrl = new URL(requestUrl);HttpURLConnection conn = (HttpURLConnection) realUrl.openConnection();Android應用開發(fā)向向InternetInternet發(fā)送請求參數(shù)發(fā)送請求參數(shù)conn.se
35、tDoOutput(true);/發(fā)送POST請求必須設置允許輸出conn.setUseCaches(false);/不使用Cacheconn.setRequestMethod(POST); conn.setRequestProperty(Connection, Keep-Alive);/維持長連接conn.setRequestProperty(Charset, UTF-8);conn.setRequestProperty(Content-Length, String.valueOf(data.length);conn.setRequestProperty(Content-Type,application/x-);DataOutputStream outStream = new DataOutputStream(conn.getOutputStream();outStream.write(data);outStream.flush();if( conn.getResponseCode() = 200 ) String result = readAsString(
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 習作:我的心愛之物 第一課時 說課稿-2024-2025學年語文五年級上冊(統(tǒng)編版)
- 2025年銷售工作計劃模板
- 2025幼兒園年度園務計劃
- Unit1 What's he like?(說課稿)-2024-2025學年人教PEP版英語五年級上冊
- 2025年采購周工作計劃例文
- 2024年全面質(zhì)量管理知識競賽題庫及答案
- 促生長藥相關項目投資計劃書
- (超)短波數(shù)字話音保密機相關項目投資計劃書
- 2025年法律顧問工作計劃范文
- 汽車專用零部件力學性能測試設備相關行業(yè)投資規(guī)劃報告
- 2024版Amazon店鋪代運營與品牌授權(quán)及維權(quán)服務合同3篇
- 影視作品價值評估-洞察分析
- 環(huán)境因素控制措施
- 2024年下學期學校德育工作總結(jié)
- 《電化學儲能系統(tǒng)艙大件運輸特殊要求》
- 2025年采購部工作計劃
- 《防范于心反詐于行》中小學防范電信網(wǎng)絡詐騙知識宣傳課件
- 江蘇某小區(qū)園林施工組織設計方案
- 勘察工作質(zhì)量及保證措施
- 墊江縣中醫(yī)院2018年11月份臨床技能中心教學設備招標項目招標文件
- 排放源統(tǒng)計(環(huán)統(tǒng))年報填報指南
評論
0/150
提交評論