編輯:進階使用
本文將從基礎入門開始,一步一步的引領大家來學習Android應用程序,幫你解開Android應用程序的神秘面紗。
Android應用程序
Android應用程序是用Java語言寫的,通過aapt工具把應用程序所需要的任何數據、資源文件打包成apk文件,這個文件是一個將應用安裝到手機上的一個載體。
有很多方式,每個Android應用程序存在於不同的世界:
(1)默認的,每個應用在他自己的Linux進程中運行,當應用中的任何代碼需要執行時Android就啟動相應的進程,當不需要執行時並且系統資源被其他應用請求時android就關閉相應的進程。
(2)每個進程都有他自己的虛擬機對象(VM),所以應用程序代碼與其他的應用運行是彼此隔離的。
(3)默認的,每個應用被分配一個唯一的Linux user ID,都被設置權限以便應用程序的文件只對用戶可見或者只對應用自己可見。
安排兩個應用程序共享一個user ID是可能的,這種情況下他們彼此之間是可以看見對方的文件的,為了保護系統資源,擁有相同ID的應用也能被安排運行在一個相同的Linux進程中,共享相同的VM。
1、應用組件(Application Components)
Android一個核心的特點就是一個應用能使用另一個應用的元素(如果另一個應用允許的話),你的應用不需要包含你用到的另一個應用的代碼也不需要你連接這些代碼,相反的,只是當應用需要這些代碼時,就啟動另一個應用相應的代碼(不是讓另一個應用全部啟動)
為了這個能工作,當一個應用的任何部分被需要時系統必須能啟動這個應用進程,並且將這個部分實例化成java對象,因此,和其他大多數系統不同的是,android應用程序沒有一個單獨的程序入口(例如:沒有main()函數),相反的,android應用有必要的組件以便當需要時系統能實例化並運行它,android中有四種組件:
(1)Activity
一個Activity是一個可見的用戶可以使用的用戶界面,如果一個應用中有多個Activity,雖然彼此結合形成一個應用在一起工作,但是每個Activity是彼此獨立的,每個都是Activity的一個子類。
一個應用程序可能由一個或多個Activity組成,這些Activity這麼樣顯示,需要多少個Activity,依賴於這個應用的設計者,一般的,有一個Activity應該被標記成當這個應用啟動時第一個呈現出來給用戶的。
每個Activity默認的被給予一個窗口來繪制,一般的,這個窗口占滿整個屏幕,但是他可以比屏幕小並且浮在另一個窗口的上面。
一個窗口中的可見的內容是由一些具有層次關系的view組成的,都是繼承自View類的,每個view都控制一個窗口中的特定的矩形框,parent view 包含children view和組織children view的布局,leaf view(那些在繼承層次最底層的view)繪制在他們所控制的矩形框中,並且對用戶的動作做出直接的回應,因此view就是Activity和用戶交互的地方,android有很多已經做好的view你可以使用,包括buttons,text fields,scroll bars,menu items,check boxes等等
一個view hierarchy是通過Activity.setContentView()方法被放到一個Activity的window中的,content view是view hierarchy中最頂端的那個view。
(2)Services
一個service不是一個用戶可見的組件,在不確定的一段時間內運行在後台,每個service都繼承自Service類。
你可以連接(connect)或者綁定(bind)到一個正在運行的service(如果這個service還沒運行的話就啟動它),當連接到service後,你可以通過一個service暴露出來的接口和這個service交流,對music service來說,這個接口可以是允許用戶暫停,後退,停止,重新播放。
和Activity或者其他組件一樣,service運行在這個應用進程的主線程中,所以他不會阻塞其他的組件或者用戶界面,他們經常為那些耗時長的任務單獨開一個線程。
(3)Broadcast receivers
一個broadcast receiver這樣一個組件,他只是接收廣播並作出反應,在系統中有很多已有的廣播,比如反應時區變化(timezone)的,電池變化(battery)的,用戶修改了系統語言時的廣播,應用程序也可以自己定義廣播,比如定義這樣一個廣播,讓其他的應用知道某些數據已經下載完畢了可以使用了。
一個應用可以有任意多個broadcast receiver來對他所關心的廣播進行監聽並作出反應。所有的receiver都繼承自BroadcastReceiver類。
BroadcastReceiver不顯示在用戶界面上,然而,他們可以啟動一個Activity來作為他們接收到的信息一種反應,或者他們可以使用NotificationManager來提示用戶,Notifications可以通過不同的方式獲得用戶的注意,比如點亮呼吸燈,震動電話,播放一個聲音等等,他們一般放一個圖標在狀態欄上,來讓用戶可以打開獲得這些信息。
(4)Content providers
Content providers是一個應用程序數據的集合,來讓其他的應用可以訪問這些數據,這些數據可以被存在文件系統中,SQLite數據庫中,或者其他可以存數據的地方,Content providers是一個基本的方法集合來使其他的應用可以獲得和存儲這些數據,然而應用不直接調用這些方法,而是使用一個ContentResolver對象來調用這些方法,一個ContentResolver可以和任何的Content providers交流,他和provider協作來管理系統中任何進程間的通信。
無論何時一個請求都應該由一個特定的組件來處理,android系統來確保包含這個組件的應用進程運行,如果需要就啟動它,如果需要就為這個組件創造一個實例,確保這個組件的一個適當的實例可以被得到。 上一頁1234下一頁
安卓手機如何更改和替換軟件圖標 安卓手機最大的特點之一就是可以修改定制各種個性化的元素,比如更改安卓手機的軟件或
安卓系統由於其開源特性,用戶個性化話定制自由度非常高,所以也出現了不少的啟動器APP,用戶可以隨意的改變手機桌面的
三星手機驅動程序怎麼安裝?相信經常使用三星手機的用戶都知道,三星手機要想使用數據線連接電腦的話,是需要安裝usb驅
對於經常使用華為榮耀系列手機的朋友來說,熟悉各種榮耀6 Plus的使用技巧會感到非常的便捷,不過不是所有的人都懂得