Activity
訪問其他應(yīng)用程序的Activity?Activity既可以在進(jìn)程內(nèi)(同一個(gè)應(yīng)用程序)訪問,也可以跨進(jìn)程訪問。如果想在同一個(gè)應(yīng)用程序中訪問Activity,需要指定Context對(duì)象和Activity的Class對(duì)象。
Intent intent = new Intent(this , Test.class );
startActivity(intent);
Activity的跨進(jìn)程訪問與進(jìn)程內(nèi)訪問略有不同辈毯。
Intent callIntent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:12345678" );
startActivity(callIntent);
共享Activity:
1.? 在AndroidManifest.xml文件中指定Action。指定Action要使用<action>標(biāo)簽搜贤,并在該標(biāo)簽的android:name屬性中指定Action
2.? 在AndroidManifest.xml文件中指定訪問協(xié)議谆沃。在指定Uri(Intent類的第2個(gè)參數(shù))時(shí)需要訪問協(xié)議。訪問協(xié)議需要使 用<data>標(biāo)簽的android:scheme屬性來指定仪芒。如果該屬性的值是“abc”唁影,那么Uri就應(yīng)該是“abc://Uri的主體 部分”,也就是說桌硫,訪問協(xié)議是Uri的開頭部分夭咬。
3.? 通過getIntent().getData().getHost()方法獲得協(xié)議后的Uri的主體部分。這個(gè)Host只是個(gè)稱謂铆隘,并不一定是主機(jī)名卓舵。讀者可以將其看成是任意的字符串。
4.? 從Bundle對(duì)象中獲得其他應(yīng)用程序傳遞過來的數(shù)據(jù)膀钠。
5.? 這一步當(dāng)然是獲得數(shù)據(jù)后做進(jìn)一步的處理了掏湾。至于如何處理這些數(shù)據(jù),就得根據(jù)具體的需求決定了肿嘲。
Content Provider?
Android應(yīng)用程序可以使用文件或SqlLite數(shù)據(jù)庫來存儲(chǔ)數(shù)據(jù)融击。Content Provider提供了一種在多個(gè)應(yīng)用程序之間數(shù)據(jù)共享的方式(跨進(jìn)程共享數(shù)據(jù))。應(yīng)用程序可以利用Content Provider完成增雳窟、刪尊浪、改匣屡、查。Content Provider存在的目的向其他應(yīng)用程序共享數(shù)據(jù)和允許其他應(yīng)用程序?qū)?shù)據(jù)進(jìn)行增拇涤、刪捣作、改操作。Android系統(tǒng)本身提供了很多Content Provider鹅士,例如券躁,音頻、視頻掉盅、聯(lián)系人信息等等也拜。我們可以通過這些Content Provider獲得相關(guān)信息的列表。這些列表數(shù)據(jù)將以Cursor對(duì)象返回趾痘。因此慢哈,從Content Provider返回的數(shù)據(jù)是二維表的形式。
BroadcastReceiver(廣播)
只需要調(diào)用sendBroadcast方法即可扼脐。該方法需要一個(gè)Intent對(duì)象岸军。通過Intent對(duì)象可以發(fā)送需要廣播的數(shù)據(jù)。
Service
Service是在一段不定的時(shí)間運(yùn)行在后臺(tái)瓦侮,不和用戶交互應(yīng)用組件。service是在主進(jìn)程中被開啟的佣谐。當(dāng)主進(jìn)程退出肚吏,而service還在服務(wù)。
Service的啟動(dòng)的兩種方式:
a.使用context.startService() 啟動(dòng)Service(本地服務(wù) Local Service 用于應(yīng)用程序內(nèi)部)
特點(diǎn):使用startService()方法啟用服務(wù)狭魂,調(diào)用者與服務(wù)之間沒有關(guān)連罚攀,即使調(diào)用者退出了,服務(wù)仍然運(yùn)行雌澄。
其生命周期為context.startService() ->onCreate()- >onStart(可多次調(diào)用)->Service running-->context.stopService()? ->onDestroy() ->Service stop?
不論調(diào)用了多少次startService()方法斋泄,你只需要調(diào)用一次stopService()來停止服務(wù)。
b.對(duì)于bindService()啟動(dòng)Service()
特點(diǎn):調(diào)用者與服務(wù)綁定在了一起镐牺,調(diào)用者一旦退出炫掐,服務(wù)也就終止。
其生命周期為context.bindService()->onCreate()->onBind()->Service running-->onUnbind() -> onDestroy() ->Service stop