`
帅子
  • 浏览: 79105 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

由 onActivityResult 引发的血案

阅读更多
提示: onActivityResult 为活动基类Activity中的方法,用于获得子活动返回的数据,需要配合子活动的setResult和finish方法使用。那么onActivityResult 是在什么时候调用的呢,三者之间什么关系呢?

一、相关代码:
由此可见,setResult需在finish方法之前调用,用来设置返回数据,其关键在finish方法委托ActivityManagerNative.getDefault().finishActivity() 做内存回收、事件触发等工作。finish方法完全可以重载,resultCode 和resultData做为入参,Google的工程师也许是想代码更清晰吧,而且给setResult留有可扩展的余地。

public final void setResult(int resultCode) {
        synchronized (this) {
            mResultCode = resultCode;
            mResultData = null;
        }
    }


public void finish() {
        if (mParent == null) {
            int resultCode;
            Intent resultData;
            synchronized (this) {
                resultCode = mResultCode;
                resultData = mResultData;
            }
            if (Config.LOGV) Log.v(TAG, "Finishing self: token=" + mToken);
            try {
                if (ActivityManagerNative.getDefault()
                    .finishActivity(mToken, resultCode, resultData)) {
                    mFinished = true;
                }
            } catch (RemoteException e) {
                // Empty
            }
        } else {
            mParent.finishFromChild(this);
        }
    }
分享到:
评论

相关推荐

    OnActivityResult

    当子Activity启动另一个Activity并期待返回结果时,这个结果通常由`onActivityResult()`方法处理。然而,在`ActivityGroup`里,子Activity的`onActivityResult()`不会被调用。这是由于`ActivityGroup`作为父Activity...

    Android中onActivityResult的用法

    onActivityResult 是 Android 中的一个回调函数,由系统自动调用,用于处理子活动返回的数据。当我们从一个活动启动另一个活动时,新的活动完成后会返回到原来的活动,这时就会触发 onActivityResult 函数。 二、为...

    onActivityResult传值的使用

    在Android应用开发中,`onActivityResult` 是一个关键的方法,用于处理从启动的Activity返回的结果。这个方法在当你启动一个Activity来执行特定任务(比如选择图片、拍摄照片或获取地理位置等),并期望得到一个返回...

    onActivityResult的小demo

    在Android应用开发中,`onActivityResult` 是一个关键的方法,用于处理从一个Activity启动另一个Activity后返回的结果。这个方法在父Activity(启动另一个Activity的Activity)中定义,当子Activity结束并返回数据时...

    Android onActivityResult和setResult方法详解及使用

    在Android应用程序开发中,`onActivityResult()` 和 `setResult()` 方法是两个非常关键的组件,它们用于在不同的Activity之间传递数据和控制流程。当我们需要从一个Activity启动另一个Activity并期待返回结果时,这...

    用注解方式处理各种OnActivityResult.zip

    在Android开发中,`OnActivityResult`是用于处理Activity之间数据交互的重要机制。当一个Activity启动另一个Activity并期望得到结果时,通常会使用`startActivityForResult()`方法,然后在被启动的Activity中通过`...

    onActivityResult使用与launchMode关系Demo

    之前遇到了onActivityResult提前调用的问题,说是和activity的启动模式有关,就做了一个Demo将四种启动方式都测试了一下,里面包括 onActivityResult的使用以及在四种不同启动模式下使用效果的不同情况

    startActivityForResult+onActivityResult+setResult

    3个方法的介绍和使用 startActivityForResult(Intent intent, int requestCode ) onActivityResult(int requestCode ,int resultCode, Intent data) setResult(int resultCode,intent intent)

    Android-避免onActivityResult和onRequestPermissionsResult烦恼requestCode的问题

    在Android应用开发中,`onActivityResult`和`onRequestPermissionsResult`是两个重要的回调方法,用于处理从其他Activity返回的结果和权限请求。然而,在大型项目或复杂应用中,管理这些请求码(requestCode)可能会...

    简单demo 说明onActivityResult()的执行时间问题

    当我们调用startActivityForResult()方法来跳转页面的时候需要重写onActivityResult方法,不然就和startActivity没什么两样,这个demo就是简单说明调用时间。流程如下:MainActivity::onCreate MainActivity::...

    告别onActivityResult 工具类DEMO

    在Android开发中,`onActivityResult` 是一个非常重要的方法,用于处理从子Activity返回的数据。然而,随着Android版本的更新,Google引入了新的回调机制,如`Lifecycle`组件和`ActivityResultContracts`,使得...

    adapter中使用startActivityForesult,在Activity 用 onActivityResult接受返回数据

    本示例关注的是如何在Adapter中利用`startActivityForResult()`方法启动一个新Activity,并在原Activity中通过`onActivityResult()`接收返回的数据。我们将详细探讨这个过程及其背后的机制。 首先,`...

    onActivityResult使用与启动方式关系

    之前遇到了onActivityResult提前调用的问题,说是和activity的启动模式有关,就做了一个Demo将四种启动方式都测试了一下,里面包括 onActivityResult的使用以及在四种不同启动模式下使用效果的不同情况

    android之activity的生命周期和launchMode、onActivityResult方法的作用

    这些状态的变化由系统根据用户操作和设备资源管理自动触发。例如,当用户启动一个新的Activity时,当前Activity会被暂停;当新Activity关闭时,原Activity可能会恢复到之前的状态。开发者需要在特定的生命周期方法中...

    onActivityResult:onActivityResult方法的工作

    在Android应用开发中,`onActivityResult`方法是一个至关重要的组件,它主要用于处理Activity之间的数据交互。当一个Activity启动另一个Activity并期待返回结果时,`onActivityResult`就派上用场了。这个方法是...

    onActivityResult demo

    在Android应用开发中,`onActivityResult` 是一个关键的方法,用于处理从启动的其他Activity返回的结果。这个例子,"onActivityResult demo",旨在演示如何在一个Activity中启动另一个或多个Activity,并在它们之间...

    Android巧用Fragment解耦onActivityResult详解

    首先,我们创建了一个名为`OnActResultEventDispatcherFragment` 的Fragment,它的主要职责是作为一个事件分发者,处理所有由其他Fragment发起的`startActivityForResult()` 请求。这个Fragment保留实例(`...

    Android中Fragment多层嵌套时onActivityResult无法正确回调问题的解决方法

    但是,在使用Fragment进行多层嵌套时,常常会遇到一个问题:通过startActivityForResult启动Activity,然后希望在Fragment的onActivityResult中接收结果,但是只有最外层的Fragment能够接收到回调,而内嵌的Fragment...

    快速解决fragment中onActivityResult不调用的问题

    2. **正确处理Activity的`onActivityResult`**:在Activity的`onActivityResult`中,记得调用`super.onActivityResult(requestCode, resultCode, data)`,以便Fragment能接收到结果。 ```java @Override ...

Global site tag (gtag.js) - Google Analytics