- Android系統(tǒng)下Java編程詳解
- 鄭萌等編著
- 1676字
- 2019-01-09 15:14:19
1.4 Andr oid開(kāi)發(fā)框架
Android系統(tǒng)作為一個(gè)開(kāi)放的系統(tǒng),它體積龐大,對(duì)于不同的開(kāi)發(fā)者來(lái)說(shuō),其在開(kāi)發(fā)過(guò)程中并不需要掌握整個(gè)Android系統(tǒng),只需要進(jìn)行其中某一部分的開(kāi)發(fā)。從功能上,將Android開(kāi)發(fā)分為移植開(kāi)發(fā)移動(dòng)電話(huà)系統(tǒng)、Android應(yīng)用程序開(kāi)發(fā),以及Android系統(tǒng)開(kāi)發(fā)3種。
從商業(yè)模式的角度來(lái)講,移植開(kāi)發(fā)移動(dòng)電話(huà)系統(tǒng)和Android應(yīng)用程序開(kāi)發(fā)是Android開(kāi)發(fā)的主流。對(duì)于移植開(kāi)發(fā)移動(dòng)電話(huà)系統(tǒng)主要由移動(dòng)電話(huà)的制造者來(lái)進(jìn)行,其產(chǎn)品主要是Android手機(jī);而公司、團(tuán)體和個(gè)人一般進(jìn)行對(duì)于Android應(yīng)用程序的開(kāi)發(fā),產(chǎn)生各種各樣的Android應(yīng)用程序。
對(duì)于Android 移植開(kāi)發(fā)來(lái)講,其主要工作集中于Linux 內(nèi)核中的相關(guān)設(shè)備驅(qū)動(dòng)程序,以及 Android 本地框架中的硬件抽象層接口的開(kāi)發(fā);對(duì)于Android應(yīng)用程序開(kāi)發(fā),其開(kāi)發(fā)的應(yīng)用程序與 Android系統(tǒng)的第四個(gè)層次的應(yīng)用程序是一個(gè)層次的內(nèi)容;對(duì)于Android系統(tǒng)的開(kāi)發(fā),涉及Android系統(tǒng)的各個(gè)層次,一般情況下是從底層到上層的整體開(kāi)發(fā)。
Android開(kāi)發(fā)框架包括基本的應(yīng)用功能開(kāi)發(fā)、數(shù)據(jù)存儲(chǔ)、網(wǎng)絡(luò)訪問(wèn)三大塊。
1.4.1應(yīng)用方面
一般而言,一個(gè)標(biāo)準(zhǔn)的Android程序包括Activity、Broadcast Intent Receiver、Service、Content Provider 4部分:
1.Activity
Activity是在Android應(yīng)用開(kāi)發(fā)中最頻繁、最基本的模塊。在Android中,Activity類(lèi)中主要是與界面資源文件相關(guān)聯(lián)(res/layout目錄下的XML資源,也可以不含任何界面資源),包含控件的顯示設(shè)計(jì)、界面交互設(shè)計(jì)、事件的響應(yīng)設(shè)計(jì)及數(shù)據(jù)處理設(shè)計(jì)、導(dǎo)航設(shè)計(jì)等application設(shè)計(jì)的方方面面。
因此,Activity是手機(jī)上的一個(gè)界面,相當(dāng)于一個(gè)網(wǎng)頁(yè),不同的是,每個(gè)Activity運(yùn)行結(jié)束時(shí)都返回一個(gè)返回值,類(lèi)似一個(gè)函數(shù)。Android系統(tǒng)會(huì)自動(dòng)記錄從首頁(yè)到其他頁(yè)面的所有跳轉(zhuǎn)記錄并且自動(dòng)將以前的Activity 壓入系統(tǒng)堆棧,用戶(hù)可以通過(guò)編程的方式刪除歷史堆棧中的Activity Instance。
2.Broadcast Intent Receiver
Intent為不同的Activity間進(jìn)行跳轉(zhuǎn)提供了機(jī)制,比如當(dāng)從A Activity跳轉(zhuǎn)到B Activity,使用Intent來(lái)實(shí)現(xiàn)如下:
Intent in = new Intent(A.this, B.class); startActivity(in);
BroadcastReceiver還為各種不同的Android應(yīng)用程序間進(jìn)行進(jìn)程間的通信提供了可能。例如,當(dāng)電話(huà)呼入時(shí),它可以通過(guò)BroadcastReceiver發(fā)布廣播消息。對(duì)于用戶(hù)而言,用戶(hù)是無(wú)法看到BroadcastReceiver 事件的,它對(duì)用戶(hù)是不透明的,BroadcastReceiver 通過(guò)NotificationManager 通知用戶(hù)這些事件發(fā)生了,它既可以在資源 AndroidManifest.xml中注冊(cè),也可以在代碼中通過(guò)Context.registerReceiver()進(jìn)行注冊(cè),注冊(cè)以后,當(dāng)事件來(lái)臨時(shí),即使程序沒(méi)有啟動(dòng),系統(tǒng)也會(huì)在需要的時(shí)候自動(dòng)啟動(dòng)此應(yīng)用程序;另外,各應(yīng)用程序很方便地通過(guò)Context.sendBroadcast()將自己的事情廣播給其他應(yīng)用程序。
3.Service
Android中的Service和Windows中的Service是一個(gè)概念,用戶(hù)可以通過(guò)startService (Intent Service)啟動(dòng)一個(gè)Service,也可以通過(guò)Context.bindService來(lái)綁定一個(gè)Service。
4.Content Provider
Content Provi der 提供了應(yīng)用程序之間數(shù)據(jù)交換的機(jī)制,一個(gè)應(yīng)用程序通過(guò)實(shí)現(xiàn)一個(gè)Content Provider的抽象接口將自己的數(shù)據(jù)暴露出去,并且隱蔽了具體的數(shù)據(jù)存儲(chǔ)實(shí)現(xiàn),這樣實(shí)現(xiàn)了Android應(yīng)用程序內(nèi)部數(shù)據(jù)的保密性。標(biāo)準(zhǔn)的Content Provider提供了基本的CRUD (Create,Read,Update,Delete)的接口,并且實(shí)現(xiàn)了權(quán)限機(jī)制,保障了數(shù)據(jù)交互的安全性。
一個(gè)標(biāo)準(zhǔn)的Android應(yīng)用程序的工程文件包含以下幾大部分:
□ Java源代碼部分(包含Activity)——放置在src目錄當(dāng)中。
□ R.java文件——由Eclipse自動(dòng)生成與維護(hù)的,開(kāi)發(fā)者不需要修改,提供了Android對(duì)的資源全局索引。
□ Android Library——應(yīng)用程序運(yùn)行的Android庫(kù)。
□ assets目錄——主要用于放置多媒體等一些文件。
□ res目錄——放置的是資源文件:drawable包含圖片文件、layout包含布局文件, values目錄里面主要包含字符串(strings.xml)、顏色(colors.xml)以及數(shù)組(arrays.xml)資源。
□ AndroidManifest.xml——應(yīng)用的配置文件,在這個(gè)文件中,需要聲明所有用到的Activity、Service、Receiver等。
1.4.2數(shù)據(jù)存儲(chǔ)
在Android中,提供的存儲(chǔ)方式包括 SharedPreferences、文件存儲(chǔ)、SQLite數(shù)據(jù)庫(kù)存儲(chǔ)方式、內(nèi)容提供器方式(Content Provider)及網(wǎng)絡(luò)方式 5種,具體介紹如下。
1.SharedPreferences
作為Android 提供的一種配置文件讀/寫(xiě)方式,默認(rèn)保存在應(yīng)用的目錄data/<package name>/shared_prefs下,通過(guò)方法getSharedPreferences(xx, 0)來(lái)獲取SharedPreferences對(duì)象進(jìn)行讀/寫(xiě)操作。
2.文件存儲(chǔ)
Android系統(tǒng)提供了進(jìn)行數(shù)據(jù)讀寫(xiě)訪問(wèn)的API,例如,openFileInput、openFileOutput等,特別需要注意的是,在Android中應(yīng)用程序的數(shù)據(jù)是私有的,出就是說(shuō),當(dāng)前應(yīng)用程序產(chǎn)生的文件其他應(yīng)用程序無(wú)法訪問(wèn)。
3.SQLite數(shù)據(jù)庫(kù)存儲(chǔ)方式
通過(guò)繼承SQLiteOpenHelper類(lèi),通過(guò)該類(lèi)提供的CRUD接口來(lái)進(jìn)行數(shù)據(jù)庫(kù)操作,方便了應(yīng)用程序的數(shù)據(jù)存儲(chǔ)操作。
4.內(nèi)容提供器方式(Content Provider)
通過(guò)調(diào)用其他應(yīng)用程序的數(shù)據(jù)接口來(lái)實(shí)現(xiàn)數(shù)據(jù)的讀/寫(xiě)訪問(wèn)。
5.網(wǎng)絡(luò)方式
主要是通過(guò)下面要提到的網(wǎng)絡(luò),訪問(wèn)該網(wǎng)絡(luò)提供的網(wǎng)絡(luò)服務(wù)接口實(shí)現(xiàn)數(shù)據(jù)的讀寫(xiě)服務(wù)(例如,WebService數(shù)據(jù)訪問(wèn)接口)。
1.4.3 網(wǎng)絡(luò)訪問(wèn)方面
主要通過(guò)java.net.*;Android.net.*來(lái)進(jìn)行HTTP 訪問(wèn)技術(shù)的封裝;利用其下提供的HttpPost、DefaultHttpClient、HttpResponse等類(lèi)提供的訪問(wèn)接口來(lái)實(shí)現(xiàn)具體的Web服務(wù)訪問(wèn)。
- 數(shù)據(jù)庫(kù)系統(tǒng)原理及MySQL應(yīng)用教程
- Mastering OpenCV 4
- Learning Laravel 4 Application Development
- SEO實(shí)戰(zhàn)密碼
- JavaScript:Moving to ES2015
- Active Directory with PowerShell
- Machine Learning in Java
- Scala for Machine Learning(Second Edition)
- Java程序設(shè)計(jì)案例教程
- 遠(yuǎn)方:兩位持續(xù)創(chuàng)業(yè)者的點(diǎn)滴思考
- 深入分析GCC
- Python Penetration Testing Essentials
- Java 9:Building Robust Modular Applications
- Learning Apache Thrift
- 鋁合金陽(yáng)極氧化與表面處理技術(shù)(第三版)