Explicit Intent Implicit Intent
生活随笔
收集整理的這篇文章主要介紹了
Explicit Intent Implicit Intent
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Intent用于啟動Activity,Service或發(fā)送Broadcast。Intent的使用有隱式和顯式之分,即Explicit Intent和Implicit Intent。
Explicit Intent是指,能夠明確指定class,或者package name的Intent。例如
Intent i = new Intent(Context,SecondActivity.class); startActivity(i);Implicit Intent是指,使用action,data或categroy的filter方式。
Intent intent = new Intent("myaction"); startActivity(intent); Intent intent = new Intent(); intent.setAction("myAction"); intent.addCategory("myCategory"); startActivity(intent); 在同一APP種,兩種方式都可以使用。相對而言,隱式可以降低耦合,而顯式效率更高。若要跨APP,則必須使用隱式。
需要注意的是,在Android 5.0之后,跨進程調用Service,需要使用顯式的方法,否則將會報錯。
java.lang.IllegalArgumentException: Service Intent must be explicit: Intent { act=com.breakloop.servicedemo.MyService }解決方案有兩種。(1)添加App Package Name.
Intent mIntent = new Intent(); mIntent.setAction("serviceAction"); mIntent.setPackage("servicePackageName"); context.startService(mIntent);(2)將隱式Intent進行嵌套,封裝為顯式Intent
Intent mIntent = new Intent(); mIntent.setAction("serviceAction"); Intent eintent = new Intent(getExplicitIntent(mContext,mIntent)); context.startService(eintent);總結
以上是生活随笔為你收集整理的Explicit Intent Implicit Intent的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Visio绘制立方体,平行四边形方法
- 下一篇: 教你选择优质主板