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的組件。
第二種:在Service中,啟動(dòng)另一個(gè)app的組件。
從所周知,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ī)看。
我們有至少兩種辦法達(dá)到啟動(dòng)另一個(gè)App中的Activity。
第一種———隱式Intent的action方式。
相信這種方式,大家都不會(huì)陌生。這里就不進(jìn)行過多的解析。這里只貼一下AppB的manifest(文件清單):
從文件清單中,我們可以看到,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)
猜你還喜歡下面的內(nèi)容