1. Activity状态转换
2. Activity生命周期
3. Activity栈
4. 启动另一个Activity
Intent intent =new Intent(FirstActivity.this,OtherActivity.class);
startActivity(intent);
5. Activity之间通信
bundle方式
发送方:
Intent intent =new Intent(MainActivity.this,SecondActivity.class);
Bundle bundle =new Bundle();
bundle.putString("stringKey", "stringValue");
intent.putExtra("key", bundle);
startActivity(intent);
接收方:
Intent intent =getIntent();
Bundle bundle =intent.getBundleExtra("key");
bundle.getString("stringKey");
简化bundle
发送方:
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
intent.putExtra("key","StringValue");
startActivity(intent);
接收方:
Intent intent = getIntent();
String stringValue = intent.getStringExtra("key");
6. Activity的匹配规则
action category这两个属性都是字符串组成。
Action设置方法:
Intent intent = new Intent();
intent.setAction("com.android.test");
一个intent只能有一个action属性。
Action匹配规则:过滤规则中如果有一个或者多个action,那么某个intent的action想要匹配成功,该intent必须 ①必须有action属性值。②Action属性只要和任意一个action完全相同即可。
Category添加方法:
Intent intent = new Intent();
intent.addCategory("com.android.category.text");
一个intent可以有多个category属性。
Category匹配规则:过滤规则中如果有一个或者多个category,那么某个intent的category想要匹配成功,该intent必须 ①可以没有category属性。②如果有category属性,则所有的category属性都要检查,必须全部的category属性都能匹配,则该intent的category属性才算匹配成功。
DateType
data属性通常用于向Action属性提供操作的数据,Data属性接受一个Uri对象。
Intent intent = new Intent();
String data = "https://www.baidu.com/";
Uri uri = Uri.parse(data);
intent.setAction(Intent.ACTION_VIEW);
intent.setData(uri);
startActivity(intent);
一个 Intent 可以通过 URI 携带外部数据给目标组件。在 <intent-filter >节点中,通过 <data/>节点匹配外部数据。
mimeType 属性指定携带外部数据的数据类型,scheme 指定协议,host、port、path 指定数据的位置、端口、和路径。
<data android:mimeType="mimeType"
android:scheme="scheme"
android:host="host"
android:port="port"
android:path="path"/>
如果在 Intent Filter 中指定了这些属性,那么只有所有的属性都匹配成功时 URI 数据匹配才会成功。