當前位置:首頁 » 安卓系統 » android的內容提供者

android的內容提供者

發布時間: 2022-12-29 03:17:37

『壹』 Android 一一 簡述Android四大組件

應用程序中,一個Activity就相當於手機屏幕,它是一種可以包含用戶界面的組件,主要用於和用戶進行交互。一個應用程序可以包含許多活動,比如事件的點擊,一般都會觸發一個新的Activity。

應用可以使用它對外部事件進行過濾只對感興趣的外部事件(如當電話呼入時,或者數據網路可用時)進行接收並做出響應。廣播接收器沒有用戶界面。然而,它們可以啟動一個activity或serice 來響應它們收到的信息,或者用NotificationManager來通知用戶。通知可以用很多種方式來吸引用戶的注意力──閃動背燈、震動、播放聲音等。一般來說是在狀態欄上放一個持久的圖標,用戶可以打開它並獲取消息。

內容提供者主要用於在不同應用程序之間實現數據共享的功能,它提供了一套完整的機制,允許一個程序訪問另一個程序中的數據,同時還能保證被訪問數據的安全性。只有需要在多個應用程序間共享數據時才需要內容提供者。例如:通訊錄數據被多個應用程序使用,且必須存儲在一個內容提供者中。它的好處:統一數據訪問方式。

是Android中實現程序後台運行的解決方案,它非常適合去執行那些不需要和用戶交互而且還要長期運行的任務(一邊打電話,後台掛著QQ)。服務的運行不依賴於任何用戶界面,即使程序被切換到後台,或者用戶打開了另一個應用程序,服務扔然能夠保持正常運行,不過服務並不是運行在一個獨立的進程當中,而是依賴於創建服務時所在的應用程序進程。當某個應用程序進程被殺掉後,所有依賴於該進程的服務也會停止運行(正在聽音樂,然後把音樂程序退出)。

『貳』 Android Activity啟動模式與狀態保存及恢復詳解

       Activity是 Android組件 中最基本也是最為常見用的四大組件(Activity,Service服務,Content Provider內容提供者,BroadcastReceiver廣播接收器)之一 。
       Activity是一個應用程序 組件 ,提供一個 屏幕 ,用戶可以用來交互為了完成某項任務。
       Activity中所有操作都與用戶密切相關,是一個負責與 用戶交互 的組件,可以通過setContentView(View)來 顯示指定控制項
       在一個android應用中,一個Activity通常就是一個單獨的屏幕,它上面可以顯示一些控制項也可以監聽並處理用戶的事件做出響應。Activity之間通過Intent進行通信。
       關於Activity啟動流程請參考之前的文章 Android activity啟動流程分析

       activity有四種啟動模式,分別為standard,singleTop,singleTask,singleInstance。如果要使用這四種啟動模式,必須在manifest文件中<activity>標簽中的launchMode屬性中配置。

       標準的默認啟動模式,這種模式下activity可以被多次實例化,即在一個task中可以存在多個activity,每一個activity會處理一個intent對象,(在A中再次啟動A,會存在後面的A在前面的A上面,當前task會存在兩個activity的實例對象)

       如果一個singleTop模式啟動的activity實例已經存在於棧頂,那麼再次啟動這個activity的時候,不會重新創建實例,而是重用位於棧頂的那個實例,並且會調用實例的onNewIntent()方法將Intent對象傳遞到這個實例中,如果實例不位於棧頂,會創建新的實例。

       啟動模式設置為singleTask,framework在啟動該activity時只會把它標示為可在一個新任務中啟動,至於是否在一個新任務中啟動,還要受其他條件的限制,即taskAffinity屬性。
        taskAffinity :默認情況下,一個應用中的所有activity具有相同的taskAffinity,即應用程序的包名。我們可以通過設置不同的taskAffinity屬性給應用中的activity分組,也可以把不同的應用中的activity的taskAffinity設置成相同的值,當兩個不同應用中的activity設置成相同的taskAffinity時,則兩個activity會屬於同一個TaskRecord。
       在啟動一個singleTask的Activity實例時,如果系統中已經存在這樣一個實例,就會將這個實例調度到任務棧的棧頂,並清除它當前所在任務中位於它上面的所有的activity;如果這個已存在的任務中不存在一個要啟動的Activity的實例,則在這個任務的頂端啟動一個實例;若這個任務不存在,則會啟動一個新的任務,在這個新的任務中啟動這個singleTask模式的Activity的一個實例。

       以singleInstance模式啟動的Activity具有全局唯一性,即整個系統中只會存在一個這樣的實例,如果在啟動這樣的Activiyt時,已經存在了一個實例,那麼會把它所在的任務調度到前台,重用這個實例。
       以singleInstance模式啟動的Activity具有獨占性,即它會獨自佔用一個任務,被他開啟的任何activity都會運行在其他任務中(官方文檔上的描述為,singleInstance模式的Activity不允許其他Activity和它共存在一個任務中)。
       被singleInstance模式的Activity開啟的其他activity,能夠開啟一個新任務,但不一定開啟新的任務,也可能在已有的一個任務中開啟,受條件的限制,這個條件是:當前系統中是不是已經有了一個activity B的taskAffinity屬性指定的任務。

       涉及到Activity啟動,就不得不說一下Activity的管理,Activity是以什麼方式及被什麼類來進行管理的,涉及的類主要如下:

       歷史棧中的一個條目,代表一個activity。ActivityRecord中的成員變數task表示其所在的TaskRecord,ActivityRecord與TaskRecord建立了聯系。

       內部維護一個 ArrayList<ActivityRecord> 用來保存ActivityRecord,TaskRecord中的mStack表示其所在的ActivityStack,TaskRecord與ActivityStack建立了聯系。

       內部維護了一個 ArrayList<TaskRecord> ,用來管理TaskRecord,ActivityStack中持有ActivityStackSupervisor對象,由ActivityStackSupervisor創建。

       負責所有ActivityStack的管理。內部管理了mHomeStack、mFocusedStack和mLastFocusedStack三個Activity棧。其中,mHomeStack管理的是Launcher相關的Activity棧;mFocusedStack管理的是當前顯示在前台Activity的Activity棧;mLastFocusedStack管理的是上一次顯示在前台Activity的Activity棧。

       ActivityThread 運行在UI線程(主線程),App的真正入口。

       用來實現AMS和ActivityThread之間的交互。

       負責調用Activity和Application生命周期。

       當一個Activity未被主動關閉,即「被動關閉」時,可能需要系統給用戶提供保持一些狀態的入口。

       前面說的入口就是:Activity提供了onSaveInstanceState()方法,該方法是Activity在關閉前保存狀態的核心方法。

       前面提到「被動關閉」,如果是主動關閉那麼就不會調用,比如:按back鍵、調用finish()等,那麼"被動關閉"的場景有哪些呢?下面給列舉一下:

       肯定在調用onStop()前被調用,但不保證在onPause()前 / 後,一般是在onPause()後調用。

       當需要保持狀態時,在onSaveInstanceState()內執行以下邏輯:

       當需要恢復時,在onCreate()內部執行以下邏輯:

       布局每個View默認實現:onSaveInstanceState(),即UI的任何改變都會自動的存儲和在activity重新創建的時候自動的恢復(只有在為該UI提供了唯一ID後才起作用);
       若需復寫該方法從而存儲額外的狀態信息時,應先調用父類的onSaveInstanceState()(因為默認的onSaveInstanceState()幫助UI存儲它的狀態);
       只使用該方法記錄Activity的瞬間狀態(UI的狀態),而不是去存儲持久化數據,因為onSaveInstanceState()調用時機不確定性;可使用 onPause()[一定會執行]存儲持久化數據;

       Activity提供了onRestoreInstanceState()方法,該方法是Activity在重新創建後恢復之前保存狀態的核心方法。

       若被動關閉了Activity,即調用了onSaveInstanceState(),那麼下次啟動時會調用onRestoreInstanceState()。

       onCreate()--->onStart()--->onRestoreInstanceState()--->onResume()

        注意: onSaveInstanceState()、onRestoreInstanceState()不一定 成對被調用
       如:當正在顯示Activity A時,用戶按下HOME鍵回到主界面,然後用戶緊接著又返回到Activity A,此時Activity A一般不會因為內存的原因被系統銷毀,故Activity A的onRestoreInstanceState()不會被執行;
       針對以上情況,onSaveInstanceState保持的參數可以選擇在onCreate()內部進行解析使用,因為onSaveInstanceState的bundle參數會傳遞到onCreate方法中,可選擇在onCreate()中做數據還原。
        至此:Activity的啟動模式及Activity的狀態保持及恢復介紹完畢。

『叄』 什麼是android的四大組件

Android四大組件有Activity,Service服務,Content Provider內容提供,BroadcastReceiver廣播接收器。

Android應用程序由一些零散的有聯系的組件組成,通過一個工程manifest綁定在一起。在manifest中,描述了每一個組件以及組件的作用,其中有6個組件,它們是Android應用程序的基石

(3)android的內容提供者擴展閱讀

Activities(活動)

應用程序的顯示層。每一個畫面對應於你的應用程序,將會是Activity類的擴展。Activity使用Views去構建UI來顯示信息和響應用戶的行為。就桌面開發而言,一個Activity相當於一張Form。

Services(服務)

Android應用程序中不可見的「工人」。 Service組件運行時不可見,但它負責更新的數據源和可見的Activity,以及觸發通知。它們常用來執行一些需要持續運行的處理,當你的 Activity已經不處於激活狀態或不可見。

Content(內容)

提供共享的數據存儲。Content Provider(內容提供器)用來管理和共享應用程序的資料庫。在應用程序間,Content Provider是共享數據的首選方式。

Broadcast Receivers(廣播接收器)

Intent廣播的「消費者」。通過創建和注冊一個Broadcast Receiver,應用程序可以監聽符合特定條件的廣播的Intent。Broadcast Receiver 會自動的啟動你的Android應用程序去響應新來的Intent。Broadcast Receiver是事件驅動程序的理想手段。

參考資料來源:網路-Android組件

『肆』 android數據存儲與訪問的方式都有哪些

數據存儲與訪問
很多時候我們的軟體需要對處理後的數據進行存儲或再次訪問。Android為數據存儲提供了多種方式,分別有如下幾種:
文件
SharedPreferences
SQLite資料庫
內容提供者(Content provider)
網路

使用文件進行數據存儲
首先給大家介紹使用文件如何對數據進行存儲,Activity提供了openFileOutput()方法可以用於把數據輸出到文件中,具體的實現過程與在J2SE環境中保存數據到文件中是一樣的。
復制代碼 代碼如下:

public class FileActivity extends Activity {
@Override public void onCreate(Bundle savedInstanceState) {
...
FileOutputStream outStream = this.openFileOutput("csdnt.txt", Context.MODE_PRIVATE);
outStream.write("CSDN".getBytes());
outStream.close();
}
}

openFileOutput()方法的第一參數用於指定文件名稱,不能包含路徑分隔符「/」 ,如果文件不存在,Android 會自動創建它。創建的文件保存在/data/data/<package name>/files目錄,如: /data/data/cn.csdn.action/files/csdn.txt ,通過點擊Eclipse菜單「Window」-「Show View」-「Other」,在對話窗口中展開android文件夾,選擇下面的File Explorer視圖,然後在File Explorer視圖中展開/data/data/<package name>/files目錄就可以看到該文件。
openFileOutput()方法的第二參數用於指定操作模式,有四種模式,分別為: Context.MODE_PRIVATE = 0
Context.MODE_APPEND = 32768
Context.MODE_WORLD_READABLE = 1
Context.MODE_WORLD_WRITEABLE = 2

Context.MODE_PRIVATE:為默認操作模式,代表該文件是私有數據,只能被應用本身訪問,在該模式下,寫入的內容會覆蓋原文件的內容,如果想把新寫入的內容追加到原文件中。可以使用Context.MODE_APPEND
Context.MODE_APPEND:模式會檢查文件是否存在,存在就往文件追加內容,否則就創建新文件。
Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用來控制其他應用是否有許可權讀寫該文件。
MODE_WORLD_READABLE:表示當前文件可以被其他應用讀取;MODE_WORLD_WRITEABLE:表示當前文件可以被其他應用寫入。
如果希望文件被其他應用讀和寫,可以傳入:
openFileOutput("csdn.txt", Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE);

android有一套自己的安全模型,當應用程序(.apk)在安裝時系統就會分配給他一個userid,當該應用要去訪問其他資源比如文件的時候,就需要userid匹配。默認情況下,任何應用創建的文件,sharedpreferences,資料庫都應該是私有的(位於/data/data/<package name>/files),其他程序無法訪問。除非在創建時指定了Context.MODE_WORLD_READABLE或者Context.MODE_WORLD_WRITEABLE ,只有這樣其他程序才能正確訪問。

讀取文件內容
如果要打開存放在/data/data/<package name>/files目錄應用私有的文件,可以使用Activity提供openFileInput()方法。
FileInputStream inStream = this.getContext().openFileInput("csdn.txt");
Log.i("FileTest", readInStream(inStream));
readInStream()的方法請看本頁下面備注。

或者直接使用文件的絕對路徑:
File file = new File("/data/data/cn.csdn.action/files/csdn.txt");
FileInputStream inStream = new FileInputStream(file);
Log.i("FileTest", readInStream(inStream));
注意:上面文件路徑中的「cn.csdn.action」為應用所在包,當你在編寫代碼時應替換為你自己應用使用的包。
對於私有文件只能被創建該文件的應用訪問,如果希望文件能被其他應用讀和寫,可以在創建文件時,指定Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE許可權。

Activity還提供了getCacheDir()和getFilesDir()方法:
getCacheDir()方法用於獲取/data/data/<package name>/cache目錄
getFilesDir()方法用於獲取/data/data/<package name>/files目錄

『伍』 到底Android核心應用是什麼

核心應用是系統運行的支持軟體,如果意外停止,您可以重啟手機。
Android應用程序沒有唯一的啟動入口(如C語言中的main()函數入口),一個Android應用程序是由多個不同的組件組合而成,組件之間通過Intent來實現通信。
Android系統的基本組件包括Activity,Service, BroadcastReceiver和ContentProvider等,此外還包括專門負責在基本組件之間傳遞消息的Intent組件。所有組件都必須在AndroidManifest.xml文件中聲明。

一、Activity —— 應用表示層( 基類 Activity )
一個活動表示一個可視化的用戶界面,關注一個用戶從事的事件。例如,一個活動可能表示一個用戶可選擇的菜單項列表,或者可能顯示照片連同它的標題。一個文本簡訊應用程序可能有一個活動,顯示聯系人的名單發送信息;第二個活動,寫信息給選定的聯系人;其他活動,重新查看舊信息或更改設置。雖然他們一起工作形成一個整體的用戶界面,但是每個活動是獨立於其他活動的。每一個都是作為Activity基類的一個子類的實現。
應用程序中的每個屏幕都是通過繼承和擴展基類 Activity 來實現的。
同一應用中的每個 Activity 是相互獨立的。程序啟動後顯示的第一幅畫面是應用程序的第一個 Activity (默認窗口),而後可以根據需要從這個 Activity 啟動另一個新的 Activity 。
Activity 利用 View 來實現應用中的 GUI (用戶直接通過 GUI 和應用程序做交互)。 Activity 窗口內的可見內容通過基類 View 提供。使用 Activity.setContentView() 方法設置當前 Activity 中的 View 對象。
二、Service —— 沒有可見的用戶界面,但能夠長時間運行於後台( 基類 Service )
一個服務沒有一個可視化用戶界面,而是在後台無期限地運行。例如一個服務可能是播放背景音樂而用戶做其他一些事情,或者它可能從網路擴取數據,或計算一些東西並提供結果給需要的活動(activities)。每個服務都繼承自Service基類。
運行於應用程序進程的主線程中,因此 Service 不會阻塞其他組件和用戶界面。
Service 是不能自己啟動的,必須通過 Context 對象(如一個 Activity )調用 startService 或 bindService 方法來啟動(用這兩種方法啟動的 Service 的生命周期不同)。
三、Broadcast Receiver —— 用戶接收廣播通知的組件( 基類 BroadcastReceiver )

一個廣播接收者是這樣一個組件,它不做什麼事,僅是接受廣播公告並作出相應的反應。許多廣播源自於系統代碼,例如公告時區的改變、電池電量低、已採取圖片、用戶改變了語言偏好。應用程序也可以發起廣播,例如為了他其他程序知道某些數據已經下載到設備且他們可以使用這些數據。一個應用程序可以有任意數量的廣播接收者去反應任何它認為重要的公告。所有的接受者繼承自BroadcastReceiver基類。
Android 中的廣播要麼來自於系統,要麼來自普通應用程序。
很多事件都可能導致系統廣播,如手機所在時區發生變化,電池電量低,用戶改變系統語言設置等。
四、Content Provider 為解決應用程序間數據通信、共享的問題(基類 ContentProvider )
內容提供者(content provider)使一個應用程序的指定數據集提供給其他應用程序。這些數據可以存儲在文件系統中、在一個SQLite資料庫、或以任何其他合理的方式。內容提供者繼承自ContentProvider 基類並實現了一個標準的方法集,使得其他應用程序可以檢索和存儲數據。然而,應用程序並不直接調用這些方法。相反,替代的是它們使用一個ContentResolver對象並調用它的方法。ContentResolver能與任何內容提供者通信,它與提供者合作來管理參與進來的進程間的通信。
在 Android 中,每個應用程序都是用自己的用戶 ID 並在自己的進程中運行。這樣的好處是,可以有效地保護系統及應用程序,避免被其他不正常德應用程序所影響,每個進程都擁有獨立的進程地址空間和虛擬空間。
一旦需要以上 4 種 Android 應用程序基本組件完成請求, Android 會首先確認該組件所在進程是否運行,如果沒有運行, Android 將先啟動進程,同時確認被請求組件的實例是否存在,否則將創建一個新的組件實例。
五、Intent —— 連接組件的紐帶
以上 4 種基本組件中,除了 Content Provider 是通過 Content Resolver 激活外,其他 3 種組件 Activity 、 Service 和 Broadcast Receiver 都是由 Intent 非同步消息激活的。

『陸』 Android的四大組件是哪些,它們的作用

Android四大組件分別為activity、service、content provider、broadcast receiver。
一、android四大組件詳解
1、activity
(1)一個Activity通常就是一個單獨的屏幕(窗口)。
(2)Activity之間通過Intent進行通信。
(3)android應用中每一個Activity都必須要在AndroidManifest.xml配置文件中聲明,否則系統將不識別也不執行該Activity。
2、service
(1)service用於在後台完成用戶指定的操作。service分為兩種:
(a)started(啟動):當應用程序組件(如activity)調用startService()方法啟動服務時,服務處於started狀態。
(b)bound(綁定):當應用程序組件調用bindService()方法綁定到服務時,服務處於bound狀態。
(2)startService()與bindService()區別:
(a)started service(啟動服務)是由其他組件調用startService()方法啟動的,這導致服務的onStartCommand()方法被調用。當服務是started狀態時,其生命周期與啟動它的組件無關,並且可以在後台無限期運行,即使啟動服務的組件已經被銷毀。因此,服務需要在完成任務後調用stopSelf()方法停止,或者由其他組件調用stopService()方法停止。
(b)使用bindService()方法啟用服務,調用者與服務綁定在了一起,調用者一旦退出,服務也就終止,大有「不求同時生,必須同時死」的特點。
(3)開發人員需要在應用程序配置文件中聲明全部的service,使用標簽。
(4)Service通常位於後台運行,它一般不需要與用戶交互,因此Service組件沒有圖形用戶界面。Service組件需要繼承Service基類。Service組件通常用於為其他組件提供後台服務或監控其他組件的運行狀態。
3、content provider
(1)android平台提供了Content Provider使一個應用程序的指定數據集提供給其他應用程序。其他應用可以通過ContentResolver類從該內容提供者中獲取或存入數據。
(2)只有需要在多個應用程序間共享數據是才需要內容提供者。例如,通訊錄數據被多個應用程序使用,且必須存儲在一個內容提供者中。它的好處是統一數據訪問方式。
(3)ContentProvider實現數據共享。ContentProvider用於保存和獲取數據,並使其對所有應用程序可見。這是不同應用程序間共享數據的唯一方式,因為android沒有提供所有應用共同訪問的公共存儲區。
(4)開發人員不會直接使用ContentProvider類的對象,大多數是通過ContentResolver對象實現對ContentProvider的操作。
(5)ContentProvider使用URI來唯一標識其數據集,這里的URI以content://作為前綴,表示該數據由ContentProvider來管理。
4、broadcast receiver
(1)你的應用可以使用它對外部事件進行過濾,只對感興趣的外部事件(如當電話呼入時,或者數據網路可用時)進行接收並做出響應。廣播接收器沒有用戶界面。然而,它們可以啟動一個activity或serice來響應它們收到的信息,或者用NotificationManager來通知用戶。通知可以用很多種方式來吸引用戶的注意力,例如閃動背燈、震動、播放聲音等。一般來說是在狀態欄上放一個持久的圖標,用戶可以打開它並獲取消息。
(2)廣播接收者的注冊有兩種方法,分別是程序動態注冊和AndroidManifest文件中進行靜態注冊。
(3)動態注冊廣播接收器特點是當用來注冊的Activity關掉後,廣播也就失效了。靜態注冊無需擔憂廣播接收器是否被關閉,只要設備是開啟狀態,廣播接收器也是打開著的。也就是說哪怕app本身未啟動,該app訂閱的廣播在

『柒』 android四大組件的作用

Android 開發的四大組件分別是:活動(activity),用於表現功能;服務(service),後台運行服務,不提供界面呈現;廣播接受者(Broadcast Receive),勇於接收廣播;內容提供者(Content Provider),支持多個應用中存儲和讀取數據,相當於資料庫。

  1. 活動

Android中,activity是所有程序的根本,所有程序的流程都運行在activity之中,activity可以算是開發者遇到的最頻繁,也是android當中最基本的模塊之一。在android的程序中,activity一般代表手機屏幕的一屏。如果把手機比作一個瀏覽器,那麼activity就相當於一個網頁。在activity當中可以添加一些Button、Checkbox等控制項,可以看到activity概念和網頁的概念相當類似。

一般一個android應用是由多個activity組成的,這多個activity之間可以進行相互跳轉。例如,按下一個Button按鈕後,可能會跳轉到其他的activity,與網頁跳轉稍微有點不一樣的是,activity之間的跳轉有可能返回值。例如,從activity A跳轉到activity B,那麼當activity B運行結束時,有可能會給activity A一個返回值。這樣做在很多時候是相當方便的。

當打開一個新的屏幕時,之前一個屏幕會被置為暫停狀態,並且壓入歷史堆棧中。用戶可以通過回退操作返回到以前打開過的屏幕。可以選擇性的一處一些沒有必要保留的屏幕,因為Android會把每個應用的開始到當前的每個屏幕保存在堆棧中。

Android 開發的四大組件分別是:活動(activity),用於表現功能;服務(service),後台運行服務,不提供界面呈現;廣播接受者(Broadcast Receive),勇於接收廣播;內容提供者(Content Provider),支持多個應用中存儲和讀取數據,相當於資料庫。

2.服務

Service是android系統中的一種組件,跟activity的級別差不多,但是他不能自己運行,只能後台運行,並且可以和其他組件進行交互。Service是沒有界面長生命周期的代碼。Service是一種程序,可以運行很長時間的,但是卻沒有用戶界面。這么說有點枯燥,來看個例子。打開一個音樂播放器的程序,這時如果想上網,那麼打開Android瀏覽器,這時雖然已經進入瀏覽器這個程序,但是歌曲播放並沒有停止,而是在後台繼續一首接一首的播放,其實這個播放就是由播放音樂的Service進行控制。當然這個播放音樂的Service也可以停止。例如,當播放列表裡的歌曲都結束,或用戶按下了停止音樂播放的快捷鍵等。Service可以在很多場合的應用中使用,如播放多媒體時用戶啟動了其他Activity,這時程序要在後台繼續播放,比如檢測SD卡上文件的變化,或在後台記錄地理信息位置的改變等,而服務卻藏在後台。

開啟Service有兩種方式:

(1)Context.starService():Service會經歷onCreat ——>onStar(如果Service還沒有運行,則Android先調用onCreat(),然後調用onStar(),所以一個Service的onStar方能會重復調用多次);如果是調用者自己直接退出而沒有調用StopService,服務會一直在後台運行。該服務的調用者再啟動起來後可以通過stopService關閉服務。注意,多次調用Context.starService()不會被嵌套(即使會有相應的onStar()方法被調用),所以無論同一個服務被啟動多少次,一旦調用Context.stopService()或者StopSelf(),都會被停止。

說明:傳遞給starService()的Intent對象會傳遞給onStar()方法。調用順序為onCreat——onStar(可調用多次)——onDestroy.

(2)Context.bindService():服務會經歷onCreate()——onBind(),onBind將返回給客戶端一個IBind介面實例,IBind允許客戶端回調服務的方法,比如得到服務運行的狀態或其他操作。這個時候把調用者(Context,如Activity)會和服務綁定在一起,Context退出了,服務就會調用onUnbind——onDestroy相應退出,所謂綁定在一起就是「共存亡」了。

3.廣播接收器

在Android中,廣播是一種廣泛運用的在應用程序之間傳輸信息的機制。而廣播接收器是對發送出來的廣播進行過濾接受並響應的一類組件。可以使用廣播接收器來讓應用對一個外部時間做出響應。例如,當電話呼入這個外部事件到來時,可以利用廣播接收器進行處理。當下載一個程序成功完成時,仍然可以利用廣播接收器進行處理。廣播接收器不NotificationManager來通知用戶這些事情發生了。廣播接收器既可以在AndroidManifest.xml中注冊,也可以在運行時的代碼中使用Context.registerReceive()進行注冊。只要是注冊了,當事件來臨時,即使程序沒有啟動,系統也在需要的時候啟動程序。各種應用還可以通過使用Context.sendBroadcast()將它們自己的Intent廣播給其他應用程序。

4.內容提供者

內容提供者(Content Provider)是Android提供的第三方應用數據的訪問方案。

在Android中,對數據的保護是很嚴密的,除了放在SD卡中的數據,一個應用所持有的資料庫、文件等內容,都是不允許其他直接訪問的。Android當然不會真的把每一個應用都做成一座「孤島」,它為所有應用都准備可一扇窗,這就是Content Provider。應用想對外提供的數據,可以通過派生Content Provider類,封裝成一枚Content Provider。每個Content Provider都用一個uri作為獨立的標識,形如:content://com.xxxxx。所有應用看著像REST的樣子,但實際上它比REST更為靈活。和REST類似,uri也可以有兩種類型,一種是帶id的;另一種是列表的,但實現者不需要按照這個模式來做,給id的uri也可以返回列表類型的數據。

熱點內容
scratch少兒編程課程 發布:2025-04-16 17:11:44 瀏覽:624
榮耀x10從哪裡設置密碼 發布:2025-04-16 17:11:43 瀏覽:355
java從入門到精通視頻 發布:2025-04-16 17:11:43 瀏覽:69
php微信介面教程 發布:2025-04-16 17:07:30 瀏覽:294
android實現陰影 發布:2025-04-16 16:50:08 瀏覽:786
粉筆直播課緩存 發布:2025-04-16 16:31:21 瀏覽:336
機頂盒都有什麼配置 發布:2025-04-16 16:24:37 瀏覽:201
編寫手游反編譯都需要學習什麼 發布:2025-04-16 16:19:36 瀏覽:796
proteus編譯文件位置 發布:2025-04-16 16:18:44 瀏覽:353
土壓縮的本質 發布:2025-04-16 16:13:21 瀏覽:581