Aria_zuo 2015-04-27 09:02 采纳率: 0%
浏览 2089
已结题

startActivityForResult 与 singleTask

我已经疑惑了,都不知道是怎么回事了。
1.在Activity的启动模式中设置为singleTask,在这个Activity中使用的startActivityForResult的时候会立即执行onActivityResult。(这个在activity之间的启动得到了证实,确实是得不到)
2.可是我现在的Activity也是设置成了singleTask,调用系统的拍照,结果却能够得到onActivityResult。(疑惑了)
3.在SingleTask的Activity中,里面有fragment,fragment调用系统拍照,结果也是在startActivityForResult的时候立即执行onActivityResult。(更疑惑了)

求各位大神帮帮忙啊!跪求原因~

  • 写回答

1条回答 默认 最新

  • 清水依恋成 2015-04-27 09:11
    关注

    singleTask不管是在xml文件配置,还是在onCreate代码类用java函数配置,原理是一样的

    Android-Activity源代码表明,startActivityForResult,与onActivityResult,本身就没什么悬案的,你用它就有,你不用他就没有。
    另外,Activity启动不管是同一个app还是多个不同app之间互相调用,和broadcast一样,都是靠广播呼叫发起的,主要承载数据体就是Intent。

    Intent既可以在activity或service自身内内传播,也可以在不同activity或service之间传播,甚至不同app之间传播,android操作系统就是这个东西。
    你所知道的onCreate有一个引入参数bundle,这个bundle就是其自身intent数据包内容的一部分。

    只是android操作系统本想叫你startActivityForResult与onActivityResult这2想个函数之间只对bundle关注就够了,不想叫你关注源代码是什么写的,因为google-android系统想叫你按照他的周期理念去编代码。比如你在Activity重写startActivityForResult这个函数,在函数里自己调用一遍onActivityResult这个函数,这个也是合法的,只是intent中的bundle不会按照android周期约定加载数据了。

    就算按照周期概念理解onActivityResult只是用来在activity启动完毕后发出一个回调通知,愿意用就用,不愿意用,也可以不用。

    评论

报告相同问题?

悬赏问题

  • ¥15 使用C#,asp.net读取Excel文件并保存到Oracle数据库
  • ¥15 C# datagridview 单元格显示进度及值
  • ¥15 thinkphp6配合social login单点登录问题
  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 虚心请教几个问题,小生先有礼了
  • ¥30 截图中的mathematics程序转换成matlab