Intent_显式与隐式
android四核心activity,service,broadcast receiver和content provider。除了content provider之外,彼此的通信都要使用Intent对象来进行。
Intent对象描述了要执行的结果是什么,基本内容可以氛围:componentName组件名称,action动作名称,data数据,category类别,extra返家数据和flag标志位6个部分。
所谓的显示intent就是我们常用的Intent.setclass(xxx.this,xxx.class),也就是指定componentName组件名称。
相对的隐式调用就是没有明确指出目标组件名称的情况。
隐式Intent则是可以直接通过androidMainfest中的<intent-filter> 启动activity
<activity android:name=".Intent1_test"> <intent-filter> <category android:name="android.intent.category.DEFAULT"></category> <action android:name="Intent1"></action> </intent-filter> </activity>
启动时候,也可以用一个静态常量来表示
startActivity(new Intent("Intent1"));
//或者
startActivity(new Intent(Intent1_test.ACTION));//Intent1_test为activity的名,ACTION为常量:public static final String ACTION = "Intent1";
隐式Intent更重要的还是可以启动别的APP的活动页面,只需要将Intent1改为对应的名称即可
startActivity(new Intent("Intent1"));
关于名字的命名法也是有 包名 +intent.action + activity名
如果你要明确拒绝被别的app启动某一个活动,需要在mainFest的活动标签中写明exported="false"
<activity android:name=".Intent1_test" android:exported="false"> <intent-filter> <category android:name="android.intent.category.DEFAULT"></category> <action android:name="Intent1"></action> </intent-filter>