首先说下这个问题的情景:
当前的软件有一个主Activity A1 并且从A1可以跳转到A2 A3两个界面 而A2 A3也可以回退到A1 同时在这之间 需要传递一些数据
第一种做法是:
Intent intent=new Intent(A1.this,A2.class);
//给intent通过setExtra等方法设置要传递的信息
startActivity(intent);
在A2中可以通过getIntent()方法将信息取出来
同理,A2回退到A1 也一样
也就是A1和A2之间互相startActivity
但是在学习的过程中 发现Activity的跳转还存在另外一个方法startActivityForResult
以A1跳转A2为说明
启动方式没有改变 只是将startActivity改为startActivityForResult
而此时从A2回到A1 就不需要再次调用startActivity了,而是采用
Intent intent=new Intent();
//同样在intent中放置需要传递的信息
setResult(RESULT_CODE, intent); //RESULT_CODE是一个int值 用于父界面区分
finish(); //关闭自己 一定要执行这句话
此时由于子窗口关闭 父窗口就被显示出来,为了取得需要传递的那些值,还需要在父窗口中复写一个重要方法onActivityResult
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
}
其中就可以根据resultCode来进行不同的操作了
最后 两者之间又有什么区别呢
default的startActivity的LaunchMode如果在多次反复跳转的情况下 产生多个A1 A2的实例(LaunchMode包括standard,SingleTop,SingleTask,SingleInstance4种)这可能并不是我们期望的
当然还有一个问题 如果采用互相跳转 同时又采用SingleTask的mode 两者之间是不是就相等了。。至少从我的理解来看 是相同的 但是在这样的情况下 觉得startActivityForResult会更方便一些
分享到:
相关推荐
在StartActivity时,合理利用Intent传递数据,并确保布局和资源能在各种屏幕尺寸下正常显示,才能打造优秀的多屏应用。同时,理解并掌握Android的生命周期管理和Activity之间的交互,将有助于提高应用的质量和用户...
此外,记得在不需要新Activity返回结果时,使用`startActivity`而不是`startActivityForResult`。 通过`startActivityForResult`,Android应用可以实现灵活的交互和数据共享,极大地丰富了用户体验。理解并熟练掌握...
Intent intent = new Intent(StartActivity.this, SecondActivity.class); ``` #### 步骤2:启动Activity并设置请求码 使用`startActivityForResult`启动被启动的Activity,同时传入请求码。 ```java ...
2. 如果目标Activity不能返回结果,可以在调用`startActivity`而不是`startActivityForResult`,以避免不必要的处理。 3. 在`onActivityResult`中,务必检查请求码和结果代码,以确保正确处理返回的结果。 4. 为了...
在Android应用开发中,`startActivity`方法是用于在不同Activity之间进行切换的关键操作。当一个Activity想要启动另一个Activity时,通常会通过调用`startActivity`并传递一个`Intent`来实现。在这个过程中,一系列...
startActivity(intent); ``` ### 2. 隐式Intent 隐式Intent不直接指定目标组件,而是通过设定Action、Data、Category等元数据来描述一个操作,然后系统会遍历所有注册过的Intent Filter,找到最适合处理这个Intent...
`startActivityForResult()`和`onActivityResult()`是Android开发中的重要机制,它们提供了`Activity`间的数据通信和流程控制,特别是在需要回调的情况下,如登录、选择图片等。理解和熟练掌握这两个方法对于构建...
Activity返回参数和传值区别:传参调用startActivity(intent)执行跳转,返回参数用startActivityForResult(intent, 1)方法,还需从写onActivityResult()方法,它是负责初始化回传参数的方法。
然后,调用`startActivity`或`startActivityForResult`启动Activity。这两个方法都位于`Context`类中,但它们的区别在于`startActivityForResult`允许你在新的Activity执行完特定任务后返回结果。在源码中,`start...
startActivity(intent); Intent intent = new Intent(android.provider.Settings.ACTION_APPLICATION_SETTINGS);//管理应用程序界面 context.startActivity(intent); 或者用以下方法(3.0以前的版本可以用此方法) ...
4. **启动Activity**: 创建Intent后,你需要调用`startActivity()`或`startActivityForResult()`来启动Activity。前者仅仅启动Activity,而后者用于启动一个需要返回结果的Activity。 5. **Activity生命周期**: 当...
显式 Intent 是通过明确指定要启动的 Activity 的类名来实现的,例如:`startActivity(new Intent(MainActivity.this, NewActivity.class))`。 隐式 Intent 是通过指定要执行的操作来实现的,例如:`startActivity...
`StartActivityForResult`的工作原理是这样的:当一个Activity(我们称之为A)启动另一个Activity(B)时,可以使用`startActivityForResult()`方法而不是普通的`startActivity()`. 在B中执行完某些操作后,可以通过...
总结,`startActivityForResult()`是Android应用中进行Activity间通信的重要工具,它允许你在启动新的Activity的同时获取返回的结果,极大地增强了应用的交互性和功能。通过理解其用法并结合实际项目需求,可以灵活...
这时,我们可以用`startActivityForResult`启动一个新的Activity来完成这些任务,而不是简单地用`startActivity`,因为后者不会提供返回结果。 `startActivityForResult`方法有两个参数: 1. `Intent`:这是一个...
它在Activity的启动过程中起到了重要的作用,特别是在调用startActivity方法后,它会检查是否使用了startActivityForResult方法,因为这会影响到启动流程中的一些行为,比如结果返回。 2. ActivityManagerService ...
在Android应用开发中,`startActivityForResult()` 是一个非常重要的方法,它允许我们在启动一个Activity时传递请求,并期待从这个启动的Activity返回结果。这个方法是Android组件间通信(IPC,Inter-Process ...
本主题将深入探讨`androidInter`,特别是`startActivityForResult`和`startActivity`这两个与`Intent`相关的API。 首先,让我们了解`Intent`的基本概念。`Intent`是一种消息传递对象,用于在Android应用程序的不同...
首先,理解`startActivityForResult`的核心概念:当我们需要在启动一个新Activity时获取返回值,就需要使用`startActivityForResult`而不是`startActivity`。通过`startActivityForResult`,我们可以启动一个新的...