您的位置:首页 > 绯闻

每日一问:context.startActivity() 不设置 FLAG 一定会崩溃么

时间:2019-07-25
永盈会棋牌app

坚持原日经、短而快的安卓高级系列,请直接在微信公众号:南辰搜索,直接关注并设置为明星,精彩不可错过。

大概大多数人都知道,当我们使用非特定时,我们需要指定,如果不指定,直接操作将直接抛出异常。

上面我们用做操作,没有事故触发的碰撞,正确的代码是:

这件事本身没有什么争议,但如果没有这面旗帜,电话会出故障吗?事实上,没有标记的处理不一定会导致电话崩溃。

上面的代码有明显的问题。我们使用它来操作而不指定任何标志。然而,在8.0手机上,你会惊讶地发现我们没有等待意外的崩溃日志,而且跳跃是非常正常的,这并不能帮助我们留下必须添加标志的结论。与众不同。然后试试9.0手机,它马上就死机了。

为什么?我们必须看看源代码。首先,基于sdk 26,我们直接打开实现类,通过标记_Activity_New_Task Flag Search的关键字上下文要求定位以下方法。

当然,这里也可以直接逐层跟踪源代码找到这种方法,效果是一样的。但由于我们都是通过日志知道异常消息的,所以直接通过异常关键字搜索肯定是最快的。这种搜索方法在许多情况下非常有用。

然后我们打开基于sdk 28的源代码:

注释写得很清楚,我们在使用时必须添加注释,但是在android n和o-mr1或24-27之间存在漏洞,即使不添加注释,它们也会正确跳转。

与源代码相比,我们发现当我们不调用时,通常有空值,所以在24-27个片段中,我们不能进入,所以我们不会抛出异常。

对于启动模式,在之前的访谈系列中已经详细描述了这个知识点。您可以直接点击链接:android interview:talk about the four startup modes of android.

日期归档
  • 友情链接:
  • 永盈会yh188 版权所有© www.ponpes-darussalamsarankabun.com 技术支持:永盈会yh188| 网站地图