1.Intent是什么
Intent是Android程序在各个组件之间交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据。我们一般用Intent来启动活动,启动服务,启动广播;
2.Intent的用法
1.在Activity启动另一个Activity
Intent intent = new Intent(MainActivity.this,NextActivity.class);
startActivity(intent);
2.在Fragment中启动另一个Activity
Intent intent = new Intent(getContext(),NextActivity.class);
startActivity(intent);
3.发送广播
定义广播接收器类,让其继承BroadcastReceiver类,然后在在AndroidMainifest.xml中对接收器修改:
<receiver
android:name=".你定义的接收器类名"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="com.example.broadcasttest.广播名"/>
</intent-filter>
</receiver>
发送广播
Intent intent = new Intent("com.example.broadcasttest.广播名");
sendBroadcast(intent);
4.启动服务
Intent Intent = new Intent(this,MySever.class);
startService(intent);
停止服务
Intent Intent = new Intent(this,MySever.class);
stopService(intent);
3.Bundle是什么
当一个Activity启动另一个Activity时,常常需要传递一些数据过去;我们通过Intent“信使”将数据传递过去,而Bundle就想信封,是数据传递时的容器。
我们使用Intent的putExtra()方法时,如果Intent有携带Bundle,那放入的数据会被自动添加到Bundle中,如果没有,那就会自动创建一个Bundle对象,并把数据传入其中。
4.使用Bundle
Intent提供了多个重载方法来携带额外的数据,Bundle可用于可序列化对象的存取:
方法 | 使用 |
---|---|
putExtras(Bundle) | 向Intent中放入需要携带的数据包 |
Bundle getExtras() | 取出Intent中携带的数据包 |
putExtra(String name,Xxx data) | 向Intent中按kay-value对的形式存入数据 |
getXxxExtras(String name) | 从Intent中按key取出指定类型的数据 |
putXxx(String key,Xxx data) | 向Bundle中按key-value的形式存入数据 |
getXxx(String key) | 按key值从Bundle中取出数据 |
putSerializable(String key,Serializable data) | 向Bundle中按key值存入可序列化的对象 |
getSerializable(String key,serializable data) | 按key值从Bundle中取出一个可序列化对象 |