提示: 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);
}
}
分享到:
相关推荐
ActivityGroup里面装的子Activity不能使用OnActivityResult()方法 的解决办法
简单的演示了 onActivityResult 的用法,提供给新手开发人员 希望能有所帮助
主要介绍了Android onActivityResult和setResult方法详解及使用的相关资料,这里提供实例,帮助大家学习理解,需要的朋友可以参考下
用注解方式处理各种OnActivityResult.zip,Android的OnActivityResult注释编译器
共享这份Android中onActivityResult的用法给大家,希望对大家有帮助。
之前遇到了onActivityResult提前调用的问题,说是和activity的启动模式有关,就做了一个Demo将四种启动方式都测试了一下,里面包括 onActivityResult的使用以及在四种不同启动模式下使用效果的不同情况
3个方法的介绍和使用 startActivityForResult(Intent intent, int requestCode ) onActivityResult(int requestCode ,int resultCode, Intent data) setResult(int resultCode,intent intent)
当我们调用startActivityForResult()方法来跳转页面的时候需要重写onActivityResult方法,不然就和startActivity没什么两样,这个demo就是简单说明调用时间。流程如下:MainActivity::onCreate MainActivity::...
避免 onActivityResult 和 onRequestPermissionsResult 烦恼requestCode的问题,帮助快速开发
NULL 博文链接:https://lufengdie.iteye.com/blog/891802
告别onActivityResult ,用代理实现获取startActivityForResult结果以及权限检查管理的工具类
adapter中使用startActivityForesult,在Activity 用 onActivityResult接受返回数据 。demo中用的是recycleview的adapter 。
之前遇到了onActivityResult提前调用的问题,说是和activity的启动模式有关,就做了一个Demo将四种启动方式都测试了一下,里面包括 onActivityResult的使用以及在四种不同启动模式下使用效果的不同情况
onActivityResult:onActivityResult方法的工作
详细测试生命周期的流程、通过demo反应launchMode的作用,onActivityResult方法的使用。
fragment 通过startActivityForResult方法启动另一个activity,返回时,不调用onActivityResult方法, 解决步骤: 1. 在Fragment所属的Activity中,重写了onActivityResult方法,确保加上super.onActivityResult ...
之前遇到了onActivityResult提前调用的问题,说是和activity的启动模式有关,就做了一个Demo将四种启动方式都测试了一下,里面包括 onActivityResult的使用以及在四种不同启动模式下使用效果的不同情况
主要介绍了Android中Fragment多层嵌套时onActivityResult无法正确回调问题的解决方法,需要的朋友可以参考下
主要给大家介绍了关于Android巧用Fragment解耦onActivityResult的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧