Android跨應用啟動
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:國際域名空間、網絡空間、營銷軟件、網站建設、青山湖網站維護、網站推廣。前言:
相信大家,很多時候都是在自己的應用中,啟動自己寫的Activity,Service、BroadcastReceiver、contentProvider 。換句話說,這些都只是 * 單個應用中 組件間 * 的啟動。而我們下面要談論的是 兩個應用間 組件 的啟動。即——使用 隱式Intent方式 啟動應用B的某個組件。
一、在開始之前,先來梳理一下跨應用啟動的2種方式:
第一種:在Activity中,啟動另一個app的組件。
第二種:在Service中,啟動另一個app的組件。
從所周知,Android中有四大組件,那么為什么小編,只介紹Activity和Service中啟動另一個應用的四大組件?
其實,BroadcastReceiver組件也是可以啟動 4大組件的。這是因為onReceive()方法中會要求傳入context實例,有了context實例,就能使用context的方法,啟動其他組件。
至于contentProvider,我想大家還沒見過,這娃自動去干過事情吧,都是被動的調用。
所以在寫代碼的時候,我們經常會在Activity或者Service中去啟動一個組件,BroadcastReceiver很少,而contentProvider更是沒見過。
另外需要跟大家說一下,Context類是一個抽象類,傳入的context實例是由其子類來實現的,這種——用父類聲明變量,由子類來實現的思維方式,在Java中是很常見的。特別是接口和抽象類,經常用到這種方式。對于小編這種由C轉Java的人來說,真是一大坑啊。
為什么Activity和Service都可以直接使用圖中的四個方法呢,這是因為Activity和Service都是繼承自ContextWrapper,所以子類擁有父類的方法。BroadcastReceiver和contentProvider則不是,具體大家可以看官方API。
二、跨應用啟動的實戰
** 下面讓我們正式進入今天的主題:跨應用啟動實戰**
1:AppA的Activity中,啟動AppB的Activity
Android提供了在一個App中啟動另一個App中的Activity的能力,這使我們的程序很容易就可以調用其他程序的功能,從而就豐富了我們App的功能。比如在微信中發送一個位置信息,對方可以點擊這個位置信息啟動騰訊地圖并導航。這個場景在現實中作用很大,尤其是朋友在陌生的環境找不到對方時,這個功能簡直就是救星。
本來想把本文的名字叫啟動另一個進程中的Activity,覺得這樣才有逼格。因為每個App都會運行在自己的虛擬機中,每個虛擬機跑在一個進程中。但仔細一想,能夠稱為一個進程,前提是這個App必須要運行起來才行。而Android提供的能力,是不需要另一個App啟動就可以將其特定的Activity啟動起來的。
也就是說B應用是處理未啟動的狀態,也就是還沒有成為系統的一個進程,那么當使用A啟動B應用的某個組件時,請問,B應用是否成為系統的進程?答案是yes。怎么看呢,可以從Android Studio 的Android device monito 中結合虛擬機看。
我們有至少兩種辦法達到啟動另一個App中的Activity。
第一種———隱式Intent的action方式。
相信這種方式,大家都不會陌生。這里就不進行過多的解析。這里只貼一下AppB的manifest(文件清單):
從文件清單中,我們可以看到,appB中有兩個Activity。其中SecondActivity就是要被appA啟動的Activity。
那么我們只要在appA的任意一個組件(Activity或Service),做如下的調用:
Intent intent=new Intent("android.intent.action.SecondActivity"); startActivity(intent);
當前名稱:Android跨應用啟動實例詳解-創新互聯
文章分享:http://vcdvsql.cn/article30/csidpo.html
成都網站建設公司_創新互聯,為您提供網站策劃、網站營銷、網站設計公司、軟件開發、虛擬主機、面包屑導航
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯