Time of Update: 2018-12-03
在很多類型的應用程式中,菜單是一個常用的使用者介面組件。要提供友好的和前後一致的使用者體驗,就應該使用Menu APIs把Activity的動作和其他選項展現給使用者。從Android3.0(API 層級
Time of Update: 2018-12-03
這一節使用使用者字典提供器作為一個例子來描述了怎樣從提供器中擷取資料。為了清晰起見,本節中的程式碼片段在UI線程上調用ContentResolver()方法,但是,在實際代碼中,應該在一個獨立的線程中執行非同步查詢。執行非同步查詢的方法之一是使用CursorLoader類,這個類在裝載器(Loader)指南中進行過比較詳細的描述。而且這裡的代碼也只是程式碼片段,它們不是一個完整應用程式的展示。按照以下基本步驟從提供器中擷取資料:1. 給提供器申請讀存取權限;2. 定義發送給提供器的查詢代碼。
Time of Update: 2018-12-03
一個Activity的使用者介面是通過View樹來提供的---這些View對象繼承View類。每個View在Activity的視窗中都控制一個特定的的矩形地區,並且能夠響應使用者的操作。例如,一個按鈕在使用者點擊它時,可以啟動一個動作。Android提供了很多已經準備好的View,你能夠使用這些View來設計和組織到你的布局中。“Widgets”是給螢幕提供的可見的並可互動的View元素。如按鈕、文本域、檢查框、或圖片等。“Layouts”是繼承於ViewGroup的View,它給它的子Vie
Time of Update: 2018-12-03
合約類是包含了針對URIs、列名、MIME類型、以及屬於提供器的其他中繼資料的常量定義的靜態類。這個類在提供器和其他應用程式之間建立一個契約,從而即使在實際的URI、列名等發生了改變,也能確保提供能夠正確的被訪問。合約類對開發人員也是有協助的,因為對於它的常量都有助記的名字,因此針對列名或URIs開發人員很少會使用錯誤的值。因為它是一個類,所以它能包含Javadoc的文檔,整合式開發環境(如Eclipse)能夠自動完成來自合約類的常量命名並給對應常量顯示Javadoc。開發人員不能訪問來自你的應
Time of Update: 2018-12-03
要建立一個Fragment,你必須建立一個Fragment的子類(或一個既存的Fragment的子類)。Fragment類的代碼看上去有點象Activity,它包含了類似Activity的的回調方法,如onCreate()、onStart()、onPause()和onStop()方法。實際上,如果你正在把一個既存的Android應用程式轉換成使用Fragment的應用程式,你只需簡單的把Activity的回調方法的代碼移到各自的Fragment的回調方法中。通常,至少應該實現下列生命週期方法:
Time of Update: 2018-12-03
在“安全和許可權”的專題中全面詳細的描述了有關Android系統的許可權和訪問。“資料存放區”的專題也描述了安全和許可權對各種儲存類型的影響。因此以下簡要介紹幾個重點內容:1. 預設情況下,儲存在裝置內部儲存空間上的資料檔案是你的應用程式和提供器私人的;2. 你建立的SQLiteDatabase資料庫對你的應用程式和提供器是私人的;3.
Time of Update: 2018-12-03
要建立一個Activity,你必須建立一個Activity的子類(或者是現存的Activity子類)。在這個子類中,需要實現系統調用的回調方法,以便Activity在生存周期的各種狀態間轉換。如Activity正在被建立、被終止、被恢複、或被銷毀等狀態,其中兩個最重要的回調方法是:onCreate()你必須在Activity子類中實現這個方法。在Activity建立時,系統會調用這個方法。在你的實現中,應該初始化必要的Activity組件。最重要的,在這兒你必須調用setContentView
Time of Update: 2018-12-03
應用程式能夠使用Intent對象間接的訪問一個內容提供器。應用程式不調用任何的ContentResolver或ContentProvicer方法,相反,它會給啟動它的Activity發送一個Intent對象,這個Intent對象通常是提供自己應用程式的一部分。目標Activity負責獲在它的UI中擷取和顯示資料。依賴Intent中的動作,目標Activity也可以提示使用者來修改提供器的資料。Intent對象也可以包含目標Activity在UI中顯示的附加資料,然後使用者在使用它來修改提供器中的
Time of Update: 2018-12-03
ContentProvider類有兩個方法能夠返回MIME類型:getType()你必須給提供實現的必要的方法之一。getStreamTypes()如果你的提供器提供了檔案,那麼就期望實現這個方法。針對錶的MIME類型getType()方法返回了由內容資源標識(URI)參數返回的描述資料類型的MIME格式中的一個字串。這個URI是被模式化的而不是一個特定的URI;因此,你應該返回跟這個模式比對的與內容資源標識相關聯的資料類型。對於普通的如text、HTML、JPEG等資料類型,getType()
Time of Update: 2018-12-03
日曆提供器是針對使用者日曆事件的一個資產庫。日曆提供器API允許你執行有關日曆、、事件、會議、提醒等內容的查詢、插入、更新、刪除操作。日曆提供器API能夠用於應用程式和同步適配器,規則的變化依賴於什麼類型的程式製造了這個調用。本文重點關注應用程式怎樣使用日曆提供API。對於與同步適配器的不同的討論,請看同步適配器。通常,要讀或寫行事曆資料,應用程式的資訊清單檔中必須包含“使用者權限”一節中描述的適當的許可權,為了讓執行普通的的操作更加容易,日曆提供器提供了一組在“日曆Intent對象”一節中介
Time of Update: 2018-12-03
前台服務是哪些被認為使用者知道的並且在記憶體低的時候不允許系統殺死的服務。前台服務必須給狀態列提供一個通知,他被放到了“進行中中(Ongoing)”標題之下,這就意味著直到這個服務被終止或從前台刪除通知才能被解除。例如,一個播放音樂的音樂播放器服務應該被設定在前台運行,因為使用者明確的知道它們的操作。狀態列中的通知可能指明了當前的歌曲,並且使用者啟動一個跟這個音樂播放器互動的Activity。要讓你的服務在前台運行,需要調用startForeground()方法,這個方法需要兩個參數:一個唯一標
Time of Update: 2018-12-03
建立操作功能表操作功能表提供了影響指定項目或UI中內容結構的動作。你能夠給任何View對象提供一個內容菜單,但是它們最常用於ListView、GridView或集合類型的View對象的項目中,使用者能夠執行每個項目上的動作。有兩個方法來提供上下文動作:1. 在一個浮動的內容菜單中提供上下文動作。當使用者在一個聲明支援操作功能表的View對象上長按(long-click)時,會顯示一個浮動的功能表項目列表(類似一個對話方塊)。每次使用者能夠在一個項目上執行的上下文動作。2. 在上下文動作模式中
Time of Update: 2018-12-03
Calendars表CalendarContract.Calendars表包含了單個日曆的詳細資料。下表中Calendars表列對應用程式和同步適配器都是可寫的。對於這個表支援的完整的欄位列表,請看“CalendarContract.Calendars參考”http://developer.android.com/reference/android/provider/CalendarContract.Calendars.html常量描述NAME日曆的名字CALENDAR_DISPLAY_NAME
Time of Update: 2018-12-03
綁定類型的服務是在客戶-服務介面中的服務端。綁定類型服務允許組件(如Activity)綁定服務、發送請求、接收響應、以及執行處理序間通訊(IPC)。一個典型的綁定類型的服務只跟它所服務的那個應用程式組件同時存在,並且不在後台無限期的運行。這份文檔向你展示了如何建立綁定類型的服務,包括怎樣跟其他應用程式組件綁定。但是,關於服務的基本資料你還是應該參照“Android
Time of Update: 2018-12-03
如果你只在應用程式的局部使用服務,並且不需要跨進程工作,那麼你能夠實現自己的Binder類,用它直接給你的用戶端提供訪問服務中公用方法的能力。注意:通常,用戶端和服務端只是在同一個應用和進程中工作,例如,對於一個要良好工作的播放音樂的應用程式,就需要把在後台工作的播放音樂的服務與應用自己的一個Activity綁定。以下是建立綁定類型服務的步驟:1. 在服務中,使用以下方法之一建立Binder執行個體: A. 包含用戶端能夠調用的公用方法;
Time of Update: 2018-12-03
建立具有綁定能力的服務時,必須提供一個IBinder對象,它用於給用戶端提供與服務端進行互動的編程介面。有三種方法能夠定義這個介面:1. 繼承Binder類如果你的服務是你的應用程式的私人服務,並且跟用戶端運行在同一個進程中,那麼就應該通過繼承Binder類來建立你的介面,並且佛從onBind()方法中返回這個介面的一個執行個體。用戶端接收這個Binder對象,並且能夠使用這個對象直接存取Binder類中實現的或Service中的公用方法。當你的服務只是在後台給你自己的應用程式工作時,這是首選技
Time of Update: 2018-12-03
應用程式使用ContentResolver用戶端對象訪問來自用戶端的資料。這個對象有一些與提供器中相同的命名的方法,提供器是ContentProvider的一個具體的子類的執行個體。ContentResolver對象的方法提供了基本的“CRUD”(建立、擷取、更新和刪除)持久化儲存的功能。在用戶端應用程式的進程中的ContentResolver對象和提供器自己應用中的ContentProvider對象自動的處理處理序間通訊。ContentProvider對象也以表的形式在資料資產庫和資料的外部表
Time of Update: 2018-12-03
用跟從提供器中擷取資料同樣的方式,你也可以使用提供器用戶端和提供器的ContentProvider對象之間的相互作用來修改資料。你調用一個帶有參數的ContentResolver對象的方法,這個參數會傳遞給相應的ContentProvider對象的方法。提供器和提供器用戶端自動處理安全和處理序間通訊。插入資料要把資料插入到提供器中,就要調用ContentResolver.insert()方法。這個方法把一個新行插入到提供器中,並且返回這行的內容的URI。以下程式碼片段顯示了怎樣把一行新的資料插入
Time of Update: 2018-12-03
內容URI是在提供器中標識資料統一資源標識。內容的統一資源標識包括完整的提供器的符號名和所指向的一個表名。當你調用一個用戶端方法來訪問提供器中的一個表時,這個表的內容的統一資源標識就應該是參數之一。在前面的程式碼中,常量CONTENT_URI包含了使用者字典的“words”表的統一資源標識。ContentResolver對象分析出URI的授權,並且使用這個授權跟已知的系統資料表的授權進行比較來找到內容的提供者,然後ContentResolver對象就能夠把查詢參數分發給正確的提供者。Conten
Time of Update: 2018-12-03
內容提供器能夠提供很多不同的資料類型。使用者字典提供器僅提供了文本類型,但是提供器還能夠提供以下類型:1. Integer2. Long integer(long)3. floating point4. long floating