1、intent介绍:
Intent最常见的用途是绑定应用程序组件,并在应用程序之间进行通信。一般用于启用Activity、启动服务、发送广播等,承担了Android应用程序三大核心组件之间相互通信。
Intent开启三大组件的方式:
①Activity:
startActivity(Intent intent);
strartActivityForResult(Intent intent);
②Service:
ComponentName startService(Intent intent);
boolean bindService(Intent service, ServiceConnection, int flags);
③BroadcastReceiver:(有多个开启的方法,这里仅列举3个)
sendBroadcase(Intent intent);
sendBroadcase(Intent intent, String receiverPermission);
sendOrderedBroadcase(Intent intent,String receiverPermission);
2、显式意图和隐式意图:
①显式意图:
在通过Intent启动Activity时,需要明确指定激活组件的名称。
代码示例:
Intent intent = new Intent(this,Activity02.class);
StartActivity(intent);
或者指定目标组件的包名:
intent.setClassName("cn.itcase.xxx");
startActivity(intent);
②隐式意图:
没有明确指定组件名的Intent称为隐式意图。Android系统会根据隐式意图中设置的action\category\数据找到最合适的组件:
<activity android:name="com.xxx">
<intent-filter>
<action android:name = "com.xxx" />
<category android:name = "android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
只有当<action> <category>中的内容同时匹配时Activity才会被开启。
使用隐式意图开启Activity代码如下:
Intent intent = new Intent();
intent.setAction("com.XX");
startActivity(intent);
③对比:
显式意图开启组件时必须指定组件的名称,一般只有在本应用程序切换组件时才使用;
隐式意图不仅可以开启本应用的组件,还可以开启其他应用的组件,比如相机、浏览器等。