編輯:Android開發實例
當對Android有一些了解後,不難發現,Android程序UI框架接近於Web頁面的概念。每一個用於呈現頁面的組件,Activity,都是彼此獨立的,它們通過系統核心來調度整合,彼此之間的通過Intent機制來串聯。
每一種架構都會有其利弊,Android當然也不能超然脫俗。由於Activity之間的松耦合關系,使得其復用能力特別的出色,Mash-Up方式可以有效的提高開發效率。但另一方面,由於Activity過於的獨立,它們之間的數據共享,成為一個麻煩的事情。
最標准的Activity之間的數據傳輸,就是通過Intent的Extra對象。比如,你在A這個Activity上拿到一坨用戶輸入的文本信息,興高采烈的想把它放到B這個Activity上展示並發送,一個很可行的方式,是通過Intent的putExtra接口,把用戶輸入的那些字符信息,按照key/value的形式放進Intent,傳輸到B這個Activity上。
如上圖示,從A到B的傳輸,看上去是一個直連,但其實,Intent都是要經由系統核心層去分析調度的,這個操作,跨越了進程邊界,自然而然,其中的數據,就是需要序列化和反序列化的,而不可以僅通過一個指針就倒騰過去了。
在Android裡,數據庫是私有的,如果想分享給第三方組件使用,就需要用ContentProvider來封裝了。比如你用系統的錄音機組件即時搞一段音頻信息,它不是返回可能大到恐怖的錄音數據,而是會返回給你一個Uri,它標明了這份數據在ContentProvider的地址信息,拿著這個Uri,領取數據就好。
當然當然,如果你足夠淡定,也可以用赤果果的File來存儲。如果這個文件存在手機私有目錄下,那就內部使用,放在SD卡上,那就可以所有應用,一切分享。既然存在外部太慢,那麼還是在內存級別解決問題好了,這時候,你可能就需要請出Android四大組件之一的Service了。Service設計的本意,就是提供一些後台的服務,數據存取,也可以歸於其職責的一部分。
Service是提供了直連機制,調用的Activity,可以通過bindService方法,與目標Service建立一條數據通路,拿到IBinder。這樣,通過Android提供的IPC模型,就可以進行遠程方法的調用和數據的傳輸了。
如上,通過這種模式,可以解決一定問題,但是對於Service來說,實在是太大才小用了,Service的專長,不是在數據,還是在邏輯。對於傳數據而言,Service還是重量了一點,不但是有連接耗精力,傳輸經由IPC,寫起來也夠費勁。而且作為組件,Service隨時可能死掉,你還是要費勁心機的處理數據的持久化,得不償失。
好吧,如果你需要在不同頁面之間共有某個內存對象,很合適的一種方式是把它們扔到Application裡面。Application是Context的一個子類,它會在整個應用任何一個組件起來之前,先起來噓噓。它的生命周期會貫穿整個應用所有組件的生命旅途,因此,放在其中的對象,不會被處理掉。
在Activity中,可以通過getApplication接口,隨時獲得Application對象的引用,用於實現一些全局對象的存儲,和處理,真是最合適不過的地方了。
本文考慮把賬單界面整理下,實現如下圖中的功能。做之前感覺應該不難,但實際做時發
本文實例講述了Android中數據庫常見操作。分享給大家供大家參考,具體如下: android中數據庫操作是非常常見了,我們會經常用到,操作的方法也有很多種形式,
登錄應用程序的屏幕,詢問憑據登錄到一些特定的應用。可能需要登錄到Facebook,微博等本章介紹了,如何創建一個登錄界面,以及如何管理安全問題和錯誤嘗試。首先,必須定義兩
JSON代表JavaScript對象符號。它是一個獨立的數據交換格式,是XML的最佳替代品。本章介紹了如何解析JSON文件,並從中提取所需的信息。Android提供了四個