利用Intent进行Activity之间的通信(2)

Intent对象是component用来与操作系统通信的一种媒介工具。

作用原理

当需要从一个Activity启动另一个Activity时,一般做法是在按钮的监听器中创建一个Intent对象,传入另一个Activity参数,然后调用startActivity(Intent)方法发送请求给操作系统的ActivityManager,

ActivityManager负责创建Activity实例并调用其onCreate(…)方法。下图演示了QuizActivity通过Intent对象来启动了CheatActivity



在《Android编程权威指南》中的GeoQuzi中一共创建了两个Intent对象分别传递 EXTRA_ANSWER_IS_TRUE 和 EXTRA_ANSWER_SHOWN 两个数据。

具体流程为 在QuziActivity中用户按下“作弊”按钮,onClick(View)被调用,通过starActivityForResult(...)来传Intent对象,其中可以加入requestCode参数来作为父Activity的标志,然后ActivityManager把Intent传给CheatActivity(子Activity),在CheatActivity中用户按下"显示答案"按钮,setResult(..)被调用打包Intent对象,当用户按下后退按钮时,子Activity从Activity栈中销毁,并把Intent通过ActivityManager来传给QuizActivity,并通过onActivityResult(...)来传递requestCode,resultCode,以及Intent对象。至此,两个Activity之间的通信完成。

注意:当中的requestCode 用于标记父Activity,因为requestCode是由父Activity来设置的。

         requestCode 用于记录用户以何种方式返回父Activity 主要包括 RESULT_OK(按钮返回)  RESULT_CANCELED(按返回键) RESULT_FIRST_USER(用户自定义常量)



显式与隐式Intent

显式Intent,同一应用里的Acitivity之间使用显式Intent来启动Activity

隐式Intent,一个应用的Activity如需启动另一个应用的Activity则可通过创建隐式Intent来处理。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值