久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4111|回復: 0
打印 上一主題 下一主題
收起左側

Android程序開發

[復制鏈接]
跳轉到指定樓層
樓主
ID:60266 發表于 2014-8-18 01:16 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
開發環境: eclipse-jee-juno-SR1-win32.zip         【JDK 1.6】jdk-6u10-rc2-bin-b32-windows-i586-p-12_sep_2008.exe
          installer_r20.0.3-windows【android sdk 升級下載包】
1:建立工程
      Java是由Sun Microsystems公司于1995年5月推出的Java程序設計語言(以下簡稱Java語言)和Java平臺的總稱。由四方面組成:Java編程語言、Java類文件格式、Java虛擬機和Java應用程序接口(Java API)。
     Java平臺Java虛擬機(Java Virtual Machine,簡稱JVM)和Java 應用編程接口(Application Programming Interface,簡稱API)構成。Java 應用編程接口為Java應用提供了一個獨立于操作系統的標準接口,可分為基本部分和擴展部分。在硬件或操作系統平臺上安裝一個Java平臺之后,Java應用程序就可運行,F在Java平臺已經嵌入了幾乎所有的操作系統。這樣Java程序可以只編譯一次,就可以在各種系統中運行。Java應用編程接口已經從1.1x版發展到1.2版。目前常用的Java平臺基于Java1.4,最近版本為Java1.7。
     Java虛擬機(Java Virtual Machine 簡稱JVM)是運行所有Java程序的抽象計算機,是Java語言的運行環境,它是Java 最具吸引力的特性之一。Java虛擬機(JVM)一種用于計算機設備的規范,可用不同的方式(軟件或硬件)加以實現。編譯虛擬機的指令集與編譯微處理器的指令集非常類似。Java虛擬機包括一套字節碼指令集、一組寄存器、一個棧、一個垃圾回收堆和一個存儲方法域。Java虛擬機(JVM)是可運行Java代碼的假想計算機。只要根據JVM規格描述將解釋器移植到特定的計算機上,就能保證經過編譯的任何Java代碼能夠在該系統上運行。Java虛擬機是一個想象中的機器,在實際的計算機上通過軟件模擬來實現。Java虛擬機有自己想象中的硬件,如處理器、堆棧、寄存器等,還具有相應的指令系統。ava語言的一個非常重要的特點就是與平臺的無關性。而使用Java虛擬機是實現這一特點的關鍵。一般的高級語言如果要在不同的平臺上運行,至少需要編譯成不同的目標代碼。而引入Java語言虛擬機后,Java語言在不同平臺上運行時不需要重新編譯。Java語言使用模式Java虛擬機屏蔽了與具體平臺相關的信息,使得Java語言編譯程序只需生成在Java虛擬機上運行的目標代碼(字節碼),就可以在多種平臺上不加修改地運行。Java虛擬機在執行字節碼時,把字節碼解釋成具體平臺上的機器指令執行。



    許多公司都開發了自己的中間件,但其與用戶的溝通都各有不同,從而導致用戶無法將各個公司不同的中間件組裝在一塊為自己服務。從而產生瓶頸。于是提出標準的概念。其實J2EE就是基于JAVA技術的一系列標準。
    注:中間件的解釋 中間件處在操作系統和更高一級應用程序之間。它充當的功能是:將應用程序運行環境與操作系統隔離,從而實現應用程序開發者不必為更多系統問題憂慮,而直接關注該應用程序在解決問題上的能力。容器的概念就是中間件的一種。
    Sun公司在1998年發表JDK1.2版本的時候, 使用了新名稱Java 2 Platform,即“Java2平臺”,修改后的JDK稱為Java 2 Platform Software Develping Kit,即J2SDK。并分為標準版(Standard Edition,J2SE), 企業版(Enterprise Edition,J2EE),微型版(MicroEdition,J2ME)。J2EE便由此誕生。
       2005年6月,JavaOne大會召開,SUN公司公開Java SE 6。此時,Java的各種版本已經更名以取消其中的數字“2”:J2EE更名為Java EE, J2SE更名為Java SE,J2ME更名為Java ME【差別不是很大】。
    Java分為三個體系JavaSE(Java2 Platform Standard Edition,java平臺標準版),JavaEE(Java 2 Platform,Enterprise Edition,java平臺企業版),JavaME(Java 2 Platform Micro Edition,java平臺微型版)。
   
Android應用程序的概念性描述
   Android應用程序包含了工程文件、代碼和各種資源,主要由Java語言編寫,每一個應用程序將被編成 Android的一個 Java 應用程序包(*.apk)。

  由于Android系統本身是基于Linux 操作系統,因此Android應用程序也運行于Linux 環境中,它
們具有以下的特點:
??   在默認情況下,每一個應用程序運行于它們的Linux 進程中;
??   每個進程具有自己的虛擬機(VM),所以每個應用程序運行于獨立的環境中;
??   在默認情況下,每一個應用程序具有唯一的Linux用戶 ID。通過設置權限讓應用程序只對用戶和應用程
序本身可見,也有一些方法可以把它們暴露給其他的應用程序。

應用程序的組成部分
一般情況下,Android應用程序由以下4 種組件構成:
??   活動(Activity);
??   廣播接收器(BroadcastReceiver);
??   服務(Service );
??   內容提供者(Content Provider )。
一個Android應用程序是一個包(Package),包中可能包含一個或者多個Android組件(component )
(1)活動(Activity)
   活動是最基本的Android應用程序組件,在應用程序中,一個活動通常就是一個單獨的用戶界面。每一個
活動都被實現為一個獨立的類,并且從活動(Activity)基類中繼承而來,活動類將會顯示由視圖(View)控 件組成的用戶接口,并對事件(Event)做出響應。大多數的應用程序都會有多個用戶界面,因此便會有多個相
應的活動。


   Android 的一個活動一般對應界面中的一個屏幕顯示,可以理解成一個界面,每一個活動在界面上可以包
含按鈕、文本框等多種可視的UI元素。


(2)廣播接收器(BroadcastReceiver)   
   廣播接收器用于讓應用程序對一個外部事件做出響應。例如:電話呼入事件、數據網絡可用通知或者到了
晚上時進行通知。
(3)服務(Service)
一個服務是一個具有一段較長生命周期但沒有用戶界面的程序。例如:一個正在從播放列表中播放歌曲的
媒體播放器在后臺運行。

(4)內容提供者(Content Provider)
應用程序能夠將它們的數據保存到文件或SQLite 數據庫中,甚至是任何有效的設備中。當需要將數據與其
他的應用共享時,內容提供者將會很有用。一個內容提供者類實現了一組標準的方法,從而能夠讓其他應用程序
保存或讀取此內容提供者處理的各種數據類型。

應用程序的生命周期
(1)前臺(Foreground)進程
(2)可見(Visible )進程
(3)服務(Service)進程
(4)后臺(Background)進程
(5)空(Empty)進程
(1)前臺(Foreground)進程
   與用戶當前正在做的事情密切相關,不同的應用程序組件能夠通過不同的方法使它的宿主進程移到前臺。當下面任何一個條件滿足時,都可以考慮將進程移到前臺。
??   進程正在屏幕的最前端運行一個與用戶交互的Activity(它的 onResume() 方法被調用);
??   進程有一個正在運行的BroadcastReceiver(它的BroadcastReceiver.onReceive()方法正在執行);
??   進程有一個Service ,并且在 Service 的某個方法(Service.onCreate()、Service.onStart() 或者Service.onDestroy())內有正在執行的代碼。

(2)可見(Visible )進程
   它有一個可以被用戶從屏幕上看到的Activity,但不在前臺——其 onPause()方法被調用。例如:如果前臺
的Activity是一個對話框,以前的Activity隱藏在對話框之后,就可能出現這種進程。這樣的進程很重要,一
般不允許被殺死,除非為了保證前臺進程的運行不得不這樣做。

(3)服務(Service)進程
   有一個已經用startService()方法啟動的Service,雖然這些進程用戶無法直接看到,但它們做的事情卻是用
戶所關心的(例如:后臺MP3 回放或后臺網絡數據的上傳/ 下載)。因此,系統將一直運行這些進程,除非內
存不足以維持所有的前臺進程和可見進程。

(4)后臺(Background )進程
  擁有一個當前用戶看不到的Activity(它的onStop() 方法被調用),這些進程對用戶體驗沒有直接的影響。
如果它們正確執行了Activity生命周期,系統可以在任意時刻殺死進程來回收內存,并提供給前面3 種類型的
進程使用。系統中通常有很多這樣的進程在運行,因此要將這些進程保存在LRU 列表中,以確保當內存不足
時用戶最近看到的進程最后一個被殺死。

(5)空(Empty )進程
  不包含任何處于活動狀態的應用程序組件。保留這種進程的唯一原因是,當下次應用程序的某個組件需要
運行時,不需要重新創建進程,這樣可以提高啟動速度。


以上所說的“進程”是從系統運行的角度考慮的,各種不同的進程可以理解成Android的各種組件的不同
狀態機(state machine )。如果從應用程序的代碼以及運行情況考慮,可以關注 Android的各種組件相對應的生命周期

1 .  活動的生命周期
2 .  服務的生命周期
3 .  廣播接收器的生命周期
1 .  活動的生命周期
   活動是Android 中最重要、最基礎的組件,用戶在界面上看到的一個個可以切換的屏幕界面就是Android
中的活動;顒拥纳芷谌鐖D1 所示。


??   運行活動的情景:當一個活動被啟動時,活動中的onCreate()、onStart() 和onResume() 這3 個方法被依次調用,活動對應的界面出現在屏幕上。
??   活動被“覆蓋”的情景:Android的活動一般都占據一個完整的屏幕,從當前活動啟動另外一個活動時,另
一個活動將被啟動到前臺(Foreground ),當前活動轉入后臺(Background ),這時活動的 onPasuse()方法將
被調用,活動轉入后臺運行。如果活動變為不可見,還將調用onStop()方法。在轉入后臺時,onStop()是否
被調用取決于活動是否被完全覆蓋,在新的活動有透明部分時,轉入后臺的活動依然“可見”,其他情況下
(較多數的情況)活動均進入不可見狀態(被完全覆蓋)。
??   活動被恢復的情景:當界面上最前面的活動退出后,它所覆蓋的活動將被恢復,這時onResume() 方法將被
調用,活動重新轉入前臺運行。
??   活動完全退出的情景:當使用回退(Back)按鈕退出活動時,onDestroy() 方法將被調用,活動關閉。如果
系統缺少內存時,也會殺死(kill)后臺的活動,其中優先殺死不可見的活動,可見的活動一般不會被殺死。

2 .  服務的生命周期
服務可以長時間運行,它的特點是沒有可視化界面,服務的生命周期如圖2 所示

   使用StartService 運行服務的情景:使用這種方法啟動服務,服務的onCreate()和onStart() 這兩個方法將被調用,服務會在后臺運行直到退出,退出時將調用onDestroy() 方法。
   使用bindService 運行服務的情景:使用這種方法啟動服務,調用者(也就是服務的客戶端)將獲得和服務
交互的類,通過其調用時服務的相關內容會處于活動狀態。

3 .  廣播接收器的生命周期
   廣播接收器有一個單一的回調方法onReceive() ,當廣播消息到達接收器時,Android將調用這個方法,并
傳遞給包含在這個消息中的Intent  對象。
   廣播接收器只有在這個方法的執行過程中才處于活動狀態,當 onReceive() 返回后,廣播接收器將不再處于
活動狀態。廣播接收器的功能類似于一個回調函數,只是單次運行時處于活動狀態。


Android的工程編譯
   在編譯Android應用程序的過程中,Java 源代碼使用Sun JDK 將Java 源程序編譯成Java 字節碼文件(多
個后綴名為.class 的文件),這一步驟和標準的Java 一致,然后通過Android自帶的工具軟件dex 把所有的字
節碼文件轉成dex 文件(單一文件classes.dex )。

    AndroidManifest.xml 文件經過Android打包工具(aapt )處理后形成二進制格式 AndroidManifest.xml 文件,實質的內容與以前相同。
   各個資源文件也經過aapt 處理,其中布局等文本文件處理成二進制文件,圖片等文件保持不變。
最后將這三個部分組合成一個應用程序包(*.apk)。AndroidManifest.xml 描述文件、Java 源文件、資源文
件是Android應用程序的三個部分;在編譯之前的工程中是這三個部分,在編譯之后APK包依然是由這三個部
分組成的。


     如圖所示,Android源文件經過了標準的Java 編譯器的編譯,又經過了dx工具的處理,標準的Java 字節
碼作為整個Android編譯的中間過程,最終生成的dex 文件(classes.dex )是一個單一文件,將工程中所有的Java源代碼文件對應的字節碼集成在一起。資源文件和AndroidManifest.xml 文件通過aapt 工具進行處理。
    在運行時,APK包將首先進行“安裝”,也就是將其中的 dex 文件進行優化,優化后的文件被保存到緩存
區域,生成格式為 dey 的優化文件,然后 Dalvik 虛擬機將運行這些dey 文件。如果應用程序包文件不發生變化,dey 文件不會被重新生成;在應用程序包發生更新的情況下,將重新由dex 生成dey。
    Android和標準 JAVA 開發的JAR 包最大的不同在于,標準JAVA 字節碼是每個文件一個Clash文件,而
Android中的一個包將生成一個Dex 文件。


使用am工具啟動Android 應用程序
  除了在GUI 界面中啟動應用程序之外,在 Android的命令行終端(可以使用 adb shell 進行連接)也可以使
用am 工具啟動應用程序。

   使用am 啟動應用程序的格式如下所示:
   # am start -n {包名}/{ 包名}.活動名



應用程序開發的結構
Android應用程序開發是Android開發中最上面的一個層次,它們構建在Android系統提供的API 之上。
Android應用程序的基礎是Android提供的各個Java 類,這些類組成了Android系統級的API


Android應用程序可以基于兩種環境來開發:Android SDK 和Android源代碼。Android系統本身內置了一部分標準應用(也包括內容提供者),在仿真器(包括 SDK環境和源代碼環境)中已經包含這些內置的程序。 用戶自行開發的應用程序和Android內置的應用層程序包位于同一個層次,都是基于Android框架層的API來構建的,它們的區別僅僅在于他們是否被包含在默認的Android系統中。


Android目錄結構

src : Java 源代碼文件
assets:主要放置多媒體等數據文件。
AndroidManifest.xml: 工程描述文件,相當于應用的配置文件。在此文件里必須聲明應用的名稱,應用所用到的Activity,Service,Reveiver等。
可惜的是drawable目錄下不能分子級目錄,如果有這方面需求只能通過命名方法來加以區分。

每個猶序都會有一竢oidManifest在它的根目錄里面。這個清單為Android系統提供了這個應用的基本信息,系統在運行之前必須知道這些信息,另外,如果我們使用系統自帶的服務,如撥號服務,應用安裝服務等,都必須在AndroidManifest.xml文件中聲明權限

AndroidManifest.xml的功能:

命名應用程序的Java應用包,這個包名用來唯一標識應用程序;

描述應用程序的組件,對實現每個組件和公布其功能的類進行命名,這些聲明使得Android系統了解這些組件以及它們在什么條件下可以被啟動

決定哪個組件運行在哪個進程里面

聲明應用程序必須具備的權限,用以訪問受保護的API,以及和其他進程的交互

聲明應用程序其他的必備權限,用以組件之間的交互

列舉application所需要鏈接的庫

drawable-*dpi:  將圖標按分辨率的高低放入不同的目錄,其中draeable-hdpi用來存放高分辨率的圖標,drawable-mdpi用來存放中等分辨率的圖標,drawable-ldpi用來存放低分辨率的圖標

res :
資源文件
   

    values文件夾:用來存放文字的信息
        (1)strings.xml:用來定義字符串和數值
              <?xml version="1.0"encoding="utf-8"?>
              <resources>
                  <string >Hello World, Hello 3G</string>
                  <string >Android1.1</string>
                    <string >哥想你了</string>
                  <string >按鈕1</string>
                  <string >按鈕1</string>
              </resources>
             每個string標簽生命了一個字符串,name屬性指定它的引用值
        (2)為什么要把這些出現的文字單獨放在strings.xml文件中?
           答案:一是為了國際化,如果需要將文件中的文字換成別的國家的語言,就可以只需要替換掉一個strings.xml文件就可以了;二是為了減少應用的體積,例如,我們要在應用中使用“哥想你了”這句話1000次,如果我們沒有將“哥想你了”定義在strings.xml文件中,而是直接在應用中使用時寫上這幾個字,那么我們就會在應用中寫4000個字。4000個字和4個字占用的內存可是有很大差距的啊,況且手機的內存本來就小,所以應該是能省就省          (3)另外還有arrays.xml,color.xml等定義數組,顏色的,都最好用單獨的一個xml文檔

     layout文件:用來存放界面信息
     <?xml version="1.0"encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:orientation="vertical">

    <TextView

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:text="@string/test"/>

   

</LinearLayout>

<LinearLayout>元素:線性布局的意思,在該元素下的所有子元素都會根據他的”orientation”屬性來決定是按行還是按列或者按逐個顯示進行布局的

<TextView>元素:是一種顯示控件,他的”text”屬性指定了在這個元素上顯示的內容

gen目錄:gen目錄下只有一個自動生成的“R.java”文件

R.java文件:默認有attr,drawable,layout,string這四個靜態內部類,每個靜態內部類對應一中資源,如layout靜態內部類對應layout中的界面文件,string靜態內部類對應string內部的string標簽。如果在layout中在增加一個界面文件或者在string內增加一個string標簽,R.java會自動在其對應的內部類增加所增加的內容。

R.java除了自動標識資源的索引功能外,還有另一個功能,就是當res文件中的某個資源在應用中沒有被用到,在這個應用被編譯時,系統不會把對應的資源編譯到應用中的APR包中。

  可以參考:原文鏈接:http://blog.csdn.net/xy84928/article/details/7047419

<project.properties>應用要求運行的最低Android版本
<android 2.2>  存放Android自身的jar包






android應用程序的入口  android應用程序中,并沒有像c++和java這樣有main函數來作為應用程序的入口.android應用程序提供的是入口Activity,而非入口函數. 在eclipse中創建一個android應用程序的時候,默認會創建一個Activity.這個Activity實際上就是入口Activity了.從哪里定義它是Activity呢?AndroidManifest.xml文件中定義了整個android應用所包含的Activity.默認生成的Activity的定義為:
        <activity android: android:label="@string/app_name">
            <intent-filter>
                <action android: />
                <category android: />
            </intent-filter>
        </activity>
   android應用程序實際上是由多個Activity按照一定的次序拼裝起來的,只不過拼裝的過程中,后臺傳遞了一些數據,使得各個Activity之間能比較好的銜接起來。
    action節點中的android.intent.action.MAIN表明它所在的Activity是整個應用程序的入口點.而category中的android.intent.category.LAUNCHER意思是把這個Activityg歸屬到加載器類,即把這個Activity標注為自動會加載和啟動的Activity,這樣程序啟動時候就先加載這個Activity了.


Android的UI系統實現1  控制和基本事件的響應
2  鍵盤事件的響應
3  運動事件的處理
4  屏幕間的跳轉和事件的傳遞
5  菜單的使用
6  彈出對話框
7  樣式的設置

Android UI 系統的知識結構如下圖所示:



   對于 一個GUI系統地使用,首先是由應用程序來控制屏幕上元素的外觀和行為,這在各個 GUI 系統中是
不相同的,但是也具有相通性。Android系統在這方面,包含了基本的控件控制,鍵盤事件響應,窗口間跳轉、
對話框、菜單、樣式等內容,這是GUI 系統所具有的通用內容。
1  控件和基本事件的響應
   在任何一個GUI 系統中,控制界面上的控件(通常稱為控件)都是一個基本的內容。對于 Android應用程
序,控件稱為View

   在Android中,在處理UI中的各種元素的時候,兩個程序中的要點為:
??      1.得到布局文件(XML)中的控件句柄
??     2.設置控件的行為       
  1.1 事件響應方法





分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人在线中文字幕 | 国产视频福利 | 综合色婷婷 | 久久丝袜 | 亚洲精品9999 | 日韩激情视频一区 | 91色视频在线观看 | 一级日批片 | 91av在线视频观看 | 天天干视频 | 精品国产一区二区三区四区在线 | 国产高清自拍视频在线观看 | 91精品国产高清久久久久久久久 | 亚洲精品一区二区冲田杏梨 | 日韩国产中文字幕 | 国产欧美一区二区三区在线看 | jdav视频在线观看免费 | 国产精品激情小视频 | 在线观看三级av | 免费午夜视频在线观看 | 亚洲免费网 | 国产中文字幕在线 | 一区二区三区电影在线观看 | 精品国产18久久久久久二百 | 成人深夜福利 | 久久久高清| 国产亚洲欧美另类一区二区三区 | www4虎| 亚欧洲精品在线视频免费观看 | 红色av社区| 精品国产乱码久久久久久图片 | 色网在线看 | 国产区第一页 | 精品1区2区 | 欧美精品一区二区三区四区 | 亚洲欧洲精品在线 | 韩国精品在线观看 | 波多野吉衣在线播放 | 人和拘一级毛片c | 久久成人免费视频 | 在线观看视频你懂得 |