学习-Intent对象

2016-04-07 / 2 阅读 / Android
什么是Intent?为什么要有Intent的?又有什么作用?

带着3个这样的问题来理解Intent。
“Intent”的中文意思是“意图”,Intent是java类,它是应用程序组件之间通信的重要信使。通常我们把意图(可能是启动某个Activity的意图)封装到Intent里,再由系统去执行我们的意图。启动者与被启动者是不直接联系的,至于为什么要这样,那是为了高层次解耦。Android使用Intent来封装yitu,不管程序想要启动一个Activity也好,还是一个Service也好,BroadcastReceiver也好,统一使用Intent封装,明显便于理解。
Intent另一个作用是,当我想用启动一个具有某个特征的组件,但是又不是明确指明时,用Intent完全可以做到,至于启动那个,便是系统所决定了。

下面是具体的用法:

Android中Activity,Service,BroadcastReceiver直接启动都使用了Intent。Intent封装了程序想要启动程序的意图,另外Intent还可以用于两个组件之间交流信息。

启动组件常用方法
Activitypublic void startActivity(Intent intent)
public void startActivityForResult(Intent intent, int requestCode)
Servicepublic boolean bindService(Intent service, ServiceConnection conn,int flags)
public ComponentName startService(Intent service)
BroadcastReceiverpublic void sendBroadcast(Intent intent)
public void sendBroadcast(Intent intent, String receiverPermission)
public void sendOrderedBroadcast(Intent intent,String receiverPermission);
那么Intent如何表达意图

通常只要设置Intent的属性即可。
例如当明确知道需要启动的Activity时,在构造Intent对象就可以设置

Intent intent = new Intent(this, NextActivity.class)

再调用startActivity(intent)便可以启动下一个Activity

例如Service

Intent intent = new Intent(MainActivity.this, MySerivce.class);

调用startService(intent)启动Service

例如:

Intent intent = new Intent();
intent.setAction("android.intent.action.test");

调用sendBroadcast(intent)发送广播

相关推荐