Intent是什么:
Intetnt是Android程序中各组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据。Intent一般可被用于启动活动、启动服务以及发送广播等场景。
Intent启动方式:
分为两种:分别是显式Intent和隐式Intent
显式Intent:
Intent有多个构造函数的重载,其中一个是Intent(Context packageontext,Class<?>cls)。这个构造函数接收两个参数,第一个参数Context,要求提供一个启动活动的上下文,第二个参数Class则是指定想要启动的目标活动,通过这个构造函数就可以构建出Intent的“意图”。然后我们怎么使用这个Intent呢?Activity类提供了一个startActivity()方法,这个方法是专门用于启动活动的,它接收一个Intent参数,这里我们将构建好的Intent传入startActivity()方法中就可以启动目标活动了。
隐式Intent:
相比于显式Activity,隐式则含蓄了许多,它并不明确指出我们想要启动哪一个活动,而是指定了一系列更为抽象的action(行动)和category(类别)等信息,然后交由系统去分析这个Intent并帮我们找出合适的活动去启动。这个合适的活动,简单的来说就是可以响应我们这个隐式Intent的活动。
使用隐式Intent。我们不仅可以启动自己程序内的活动。还可以启动其他程序的活动,这使得Android多个应用程序之间的功能共享变成了可能。比如说你的应用程序中需要展示一个网页,这时候你没有必要自己去实现一个浏览器,事实上也不太可能,而是只需要调用系统的浏览器来打开这个网页就行了。
向下一个活动传递数据:
在启动活动时传递数据的思路很简单,Intent中提供了一系列putExtra()方法的重载,可以把我们想要传递的数据暂时存在Intent中,启动了另一个活动后,只需要把这些数据再从Intent中取出就可以了。比如说MainActivity中有一个字符串,现在想把这个字符串传递到SecondActivity中,你可以这样做:
这里可以看到 loge的后面灰色的data里面就是我们传的data了
返回数据给上一个活动:
既然可以传递数据给下一个活动,那么肯定可以把数据返回给上一个活动。不过不同的是,返回上一个活动只需要按一下back键就可以了,并没有一个用于启动活动的Intent来传递数据。通过查阅文档你会发现,Activity中还有一个StartActivityResult()方法也是用于启动活动的,但是这个方法期望在活动销毁的时候能够返回上一个活动给上一个活动。