在 Android 中启动 新Activity (跳转页面)的两种方式:startActivity(intent) 和 registerForActivityResult

在 Android 开发中,启动一个新的 Activity 是一个常见的操作。根据不同的需求,开发者可以选择不同的方法来实现这一目的。本文将探讨两种启动 Activity 的方式:传统的 startActivity(intent) 方法和 AndroidX 库引入的新方法 registerForActivityResult。我们将分别介绍它们的用途、特点以及适用场景。

startActivity(intent)

用途

当你只需要启动一个新的 Activity 而不关心其返回结果时,可以使用 startActivity(intent) 方法。这是一种简单直接的方式,适用于大多数仅需导航到另一个屏幕的应用场景。

特点

  • 简单易用:只需要几行代码就可以完成 Activity 的启动。
  • 不处理结果:此方法不会等待启动的 Activity 返回结果,也不会为处理结果做额外的工作。

示例

下面是一个简单的例子,展示如何使用 startActivity(intent) 启动一个新的 Activity:

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

registerForActivityResult

用途

当你需要从启动的 Activity 获取结果时,比如用户在新 Activity 中选择了某项数据并返回给上一个 Activity,这时就需要使用 registerForActivityResult 方法。

特点

  • 处理结果:这种方法允许你注册一个回调函数,当启动的 Activity 完成后,可以通过这个回调函数处理返回的数据。
  • 现代且灵活:相比旧的方式,registerForActivityResult 提供了一个更加现代化和类型安全的方式来处理 Activity 间的数据交互。

示例

以下是一个使用 registerForActivityResult 启动 Activity 并处理返回结果的例子:

ActivityResultLauncher<Intent> activityResultLauncher = registerForActivityResult(
    new ActivityResultContracts.StartActivityForResult(),
    new ActivityResultCallback<ActivityResult>() {
        @Override
        public void onActivityResult(ActivityResult result) {
            if (result.getResultCode() == RESULT_OK) {
                Intent data = result.getData();
                // 处理返回的数据
            }
        }
    });

// 当需要启动 Activity 时调用
Intent intent = new Intent(this, TargetActivity.class);
activityResultLauncher.launch(intent);

何时使用哪种方法

不需要结果
  • 场景:如果你只是想打开一个新的 Activity 来显示信息或导航到另一个界面,而不期待从这个 Activity 得到任何反馈,那么使用 startActivity(intent) 是最合适的选择。
需要结果
  • 场景:如果你启动了一个 Activity,并且需要该 Activity 完成某些任务后返回数据(如用户选择的照片、填写的表单等),则应该使用 registerForActivityResult

总结

  • 简单启动:使用 startActivity(intent),适用于不需要处理返回结果的场景。
  • 需要结果:使用 registerForActivityResult,适用于需要处理启动 Activity 后返回的数据的场景。

选择合适的方法取决于你的具体需求。如果你的应用场景较为简单,直接使用 startActivity(intent) 可以减少代码量;而对于需要处理返回数据的场景,registerForActivityResult 提供了更为优雅和安全的解决方案。希望本文对你理解 Android 中启动 Activity 的不同方式有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值