最近在參考《Android開發(fā)藝術(shù)探索》學(xué)習(xí)跨進(jìn)程通信欧引,在寫一個(gè)使用Messenger跨APP通信的小實(shí)例時(shí)漓拾,在調(diào)起另一個(gè)APP的組件時(shí)遇到幾個(gè)值得注意的點(diǎn),記錄一下拱层。
一、調(diào)起其他App的Activity組件
? ? 1宴咧、隱式Intent調(diào)起方式根灯,當(dāng)使用action匹配規(guī)則,目標(biāo)組件不要忘記添加默認(rèn)的category規(guī)則。
? 錯(cuò)誤實(shí)例:
? 正確實(shí)例:
? 點(diǎn)評(píng):如果是隱式Intent烙肺,系統(tǒng)會(huì)默認(rèn)加上一個(gè)android.intent.category.DEFAULT纳猪,因此如果目標(biāo)組件中沒有,隱式Intent就會(huì)匹配失敗桃笙。
2氏堤、關(guān)于android:exported屬性是否需要設(shè)置
android:exported 是Android中的四大組件 Activity,Service搏明,Provider鼠锈,Receiver 四大組件中都會(huì)有的一個(gè)屬性⌒侵總體來說它的主要作用是:是否支持其它應(yīng)用調(diào)用當(dāng)前組件购笆。?
點(diǎn)評(píng):如果包含有intent-filter 默認(rèn)值為true; 沒有intent-filter默認(rèn)值為false。由于我們已經(jīng)設(shè)置intent-filter虚循,可以不用再設(shè)置android:exported="true".
二同欠、調(diào)起其他App的Service組件
1、隱式Intent調(diào)起方式:在Android5.0以前可以通過隱式Intent方式啟動(dòng)其他App的Service,就跟Activity啟動(dòng)隱式Intent一樣的横缔。但是在5.0以后铺遂,只能使用顯示的Intent方式啟動(dòng)了。
錯(cuò)誤實(shí)例:
正確實(shí)例: