StartActivityForResult方法和finish方法的一些理解
来源:互联网 发布:window10无法安装软件 编辑:程序博客网 时间:2024/06/05 05:40
1.startActivityForResult方法的使用场景?requestCode和resultCode的含义?
答: 使用场景:用户从一个activity跳转到一个新的activity并从新的activity中获取一些信息。如:跳转图片库选择某个图片做头像,选择联系人,选择收货地址等等。
requestCode用于记录跳转过来的activity做什么(是选择照片还是选择收货地址)该信息会发送到 AMS 那边的 ActivityRecord.requestCode 变量进行记录,Client 端新 Activity 并不知道这个信息。
注意:requestCode >= 0 (至于原因得翻源码 ,我功力不足,所以…)
如果requestCode的值<0,则startActivityForResult方法的效果就类似与startActivity。
resultCode 告诉调用者的一些信息,该信息由被调用 Activity / framework 写入,并经过 AMS 传递给源 Activity。
2.A 启动 B ,B 中何时执行 setResult ? setResult 是否可以位于 finish 之后?
不可以.原因如下:
public final void setResult(int resultCode, Intent data) { synchronized (this) { mResultCode = resultCode; mResultData = data; } }
可以看到setResult方法只是进行了赋值操作。再看一下finish方法
可以看出finish方法才是真正的去把值传回去。
3.startActivityForResult 和 singleTask 导致源 Activity 收不到正确结果问题
3.1.基本原则
源 Activity 和目标 Activity 无法在跨 Task 情况下通过 onActivityResult 传递数据
3.2 Android 5.0 以上 AMS 在处理 manifest.xml 文件中的 singleTask 和 singleInstance 信息「不会」创建新的 Task,因此可以收到正常回调
3.3 Android 4.4.4 以下 AMS 在处理 manifest.xml 文件中的 singleTask 和 singleInstance 信息「会」创建新的 Task,因此在 startActivity 之后立即收到取消的回调
上述结果参考刚哥的标准答案以及自己的思考.
- StartActivityForResult方法和finish方法的一些理解
- activity调用finish方法理解
- 关于startactivityforresult的一些理解
- Fragment的startActivityForResult方法
- startActivityForResult方法的使用
- 泛型的理解和一些方法
- 关于hashcode()方法和equals()方法的一些理解
- startActivityForResult和onActivityResult的理解
- startActivityForResult 方法
- 关于StartActivityForResult方法的使用
- 关于startActivityForResult()方法的使用
- fragment,和适配器中的finish方法
- StartActivityForResult() 和setResult() 方法获取不到result 的BUG
- Intent和Activity的另一种启动方法startActivityForResult()
- 覆写Activity的finish()方法
- activity中finish方法的学习
- activity中finish方法的学习一
- activity中finish方法的学习一
- 网络调试助手连接远程服务器
- 牛客算法-第二章
- Oracle操作Session的方法
- Effective C++总结
- 关于mapreduce运行错误
- StartActivityForResult方法和finish方法的一些理解
- bzoj4554 [Tjoi2016&Heoi2016]游戏(二分图最大匹配)
- c入门实训
- 关于翻折的实现方式cocos2d
- 听说开博客记录会有助于提高自己
- TensorFlow模型保存和提取方法
- 定积分的基本性质2 乘积可积性
- 【水仙花数问题】水仙花数是指一个三位数,其各位数字立方和等于该数本身
- python find同时含有中文和英文的字符串时返回-1问题