中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

Android跨應(yīng)用啟動(dòng)實(shí)例詳解-創(chuàng)新互聯(lián)

Android跨應(yīng)用啟動(dòng)

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:國際域名空間、網(wǎng)絡(luò)空間、營銷軟件、網(wǎng)站建設(shè)、青山湖網(wǎng)站維護(hù)、網(wǎng)站推廣。

前言:

相信大家,很多時(shí)候都是在自己的應(yīng)用中,啟動(dòng)自己寫的Activity,Service、BroadcastReceiver、contentProvider 。換句話說,這些都只是 * 單個(gè)應(yīng)用中 組件間 * 的啟動(dòng)。而我們下面要談?wù)摰氖?兩個(gè)應(yīng)用間 組件 的啟動(dòng)。即——使用 隱式Intent方式 啟動(dòng)應(yīng)用B的某個(gè)組件。

一、在開始之前,先來梳理一下跨應(yīng)用啟動(dòng)的2種方式:

第一種:在Activity中,啟動(dòng)另一個(gè)app的組件。

Android跨應(yīng)用啟動(dòng)實(shí)例詳解

第二種:在Service中,啟動(dòng)另一個(gè)app的組件。

Android跨應(yīng)用啟動(dòng)實(shí)例詳解

從所周知,Android中有四大組件,那么為什么小編,只介紹Activity和Service中啟動(dòng)另一個(gè)應(yīng)用的四大組件?


其實(shí),BroadcastReceiver組件也是可以啟動(dòng) 4大組件的。這是因?yàn)閛nReceive()方法中會(huì)要求傳入context實(shí)例,有了context實(shí)例,就能使用context的方法,啟動(dòng)其他組件。


至于contentProvider,我想大家還沒見過,這娃自動(dòng)去干過事情吧,都是被動(dòng)的調(diào)用。


所以在寫代碼的時(shí)候,我們經(jīng)常會(huì)在Activity或者Service中去啟動(dòng)一個(gè)組件,BroadcastReceiver很少,而contentProvider更是沒見過。


另外需要跟大家說一下,Context類是一個(gè)抽象類,傳入的context實(shí)例是由其子類來實(shí)現(xiàn)的,這種——用父類聲明變量,由子類來實(shí)現(xiàn)的思維方式,在Java中是很常見的。特別是接口和抽象類,經(jīng)常用到這種方式。對于小編這種由C轉(zhuǎn)Java的人來說,真是一大坑啊。


為什么Activity和Service都可以直接使用圖中的四個(gè)方法呢,這是因?yàn)锳ctivity和Service都是繼承自ContextWrapper,所以子類擁有父類的方法。BroadcastReceiver和contentProvider則不是,具體大家可以看官方API。


二、跨應(yīng)用啟動(dòng)的實(shí)戰(zhàn)

** 下面讓我們正式進(jìn)入今天的主題:跨應(yīng)用啟動(dòng)實(shí)戰(zhàn)**

1:AppA的Activity中,啟動(dòng)AppB的Activity

Android提供了在一個(gè)App中啟動(dòng)另一個(gè)App中的Activity的能力,這使我們的程序很容易就可以調(diào)用其他程序的功能,從而就豐富了我們App的功能。比如在微信中發(fā)送一個(gè)位置信息,對方可以點(diǎn)擊這個(gè)位置信息啟動(dòng)騰訊地圖并導(dǎo)航。這個(gè)場景在現(xiàn)實(shí)中作用很大,尤其是朋友在陌生的環(huán)境找不到對方時(shí),這個(gè)功能簡直就是救星。

本來想把本文的名字叫啟動(dòng)另一個(gè)進(jìn)程中的Activity,覺得這樣才有逼格。因?yàn)槊總€(gè)App都會(huì)運(yùn)行在自己的虛擬機(jī)中,每個(gè)虛擬機(jī)跑在一個(gè)進(jìn)程中。但仔細(xì)一想,能夠稱為一個(gè)進(jìn)程,前提是這個(gè)App必須要運(yùn)行起來才行。而Android提供的能力,是不需要另一個(gè)App啟動(dòng)就可以將其特定的Activity啟動(dòng)起來的。

也就是說B應(yīng)用是處理未啟動(dòng)的狀態(tài),也就是還沒有成為系統(tǒng)的一個(gè)進(jìn)程,那么當(dāng)使用A啟動(dòng)B應(yīng)用的某個(gè)組件時(shí),請問,B應(yīng)用是否成為系統(tǒng)的進(jìn)程?答案是yes。怎么看呢,可以從Android Studio 的Android device monito 中結(jié)合虛擬機(jī)看。

Android跨應(yīng)用啟動(dòng)實(shí)例詳解

我們有至少兩種辦法達(dá)到啟動(dòng)另一個(gè)App中的Activity。

第一種———隱式Intent的action方式。

相信這種方式,大家都不會(huì)陌生。這里就不進(jìn)行過多的解析。這里只貼一下AppB的manifest(文件清單):

Android跨應(yīng)用啟動(dòng)實(shí)例詳解

從文件清單中,我們可以看到,appB中有兩個(gè)Activity。其中SecondActivity就是要被appA啟動(dòng)的Activity。
那么我們只要在appA的任意一個(gè)組件(Activity或Service),做如下的調(diào)用:

Intent intent=new Intent("android.intent.action.SecondActivity");
startActivity(intent);

當(dāng)前名稱:Android跨應(yīng)用啟動(dòng)實(shí)例詳解-創(chuàng)新互聯(lián)
文章分享:http://www.rwnh.cn/article30/csidpo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃網(wǎng)站營銷、網(wǎng)站設(shè)計(jì)公司、軟件開發(fā)、虛擬主機(jī)、面包屑導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司
长寿区| 溆浦县| 西吉县| 玛曲县| 吉木乃县| 本溪市| 资溪县| 资阳市| 金寨县| 灌云县| 娄底市| 金沙县| 北京市| 定陶县| 金湖县| 屯门区| 四川省| 太仆寺旗| 连云港市| 松潘县| 扶风县| 安宁市| 文昌市| 厦门市| 通许县| 常山县| 滁州市| 凤冈县| 达日县| 阿鲁科尔沁旗| 龙门县| 抚顺县| 十堰市| 蒙阴县| 新营市| 巴中市| 桓台县| 江阴市| 许昌县| 宁晋县| 玉门市|