关于finish的startActivity

假设现在已经按顺序打开了 A、B、C、D 四个Activity,现在在D中。

1、启动B(新的),关闭D、C和B(旧的)。

Intent intent = new Intent(this, B.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);  
startActivity(intent);  

A、B、C、D 变成 A、B。                     B的启动模式是默认的话。

2、回到B,关闭D、C

Intent intent = new Intent(this, B.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);  

A、B、C、D 变成 A、B。                     会调用B中的 onNewIntent() 方法。

3、跳回到B,但不新启动一个B。

Intent intent = new Intent(this, B.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);

A、B、C、D 变成 A、C、D、B。        相当于给B设置了单启动模式。

4、普通新启动一个B

Intent intent = new Intent(this, B.class);
startActivity(intent);

A、B、C、D 变成 A、B、C、D、B。    会造成迭代状况。



startActivity和startActivityForResult是Android开发中常用的两个方法,它们的区别如下[^1]: 1. startActivity( ):这个方法用于启动另一个Activity,它不会自动返回到原来的Activity。如果需要返回到原来的页面,必须再次使用startActivity( )来启动原来的Activity。 2. startActivityForResult( ):这个方法也用于启动另一个Activity,但它可以在启动的Activity结束后返回结果给原来的Activity。在启动Activity时,可以传递一个请求码(requestCode),当启动的Activity结束后,可以通过onActivityResult( )方法获取返回的结果。 下面是一个示例代码,演示了startActivity和startActivityForResult的使用: ```java // 启动另一个Activity Intent intent = new Intent(MainActivity.this, SecondActivity.class); startActivity(intent); // 启动另一个Activity并获取返回结果 Intent intent = new Intent(MainActivity.this, SecondActivity.class); startActivityForResult(intent, REQUEST_CODE); // 在启动的Activity中设置返回结果 Intent intent = new Intent(); intent.putExtra("result", "Hello World"); setResult(RESULT_OK, intent); finish(); // 在原来的Activity中获取返回结果 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) { String result = data.getStringExtra("result"); // 处理返回结果 } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值