为什么onAttach(活动活动)不推荐?

在将SDK更新到API级别23后,我发现onAttach (Activity activity)已被弃用,并且新方法在onAttach (Context context) 。 任何人都可以启发我为什么做这个改变吗?

  • Android:将parameter passing给Service from Activity
  • 如何杀死我自己的活动 - 艰难的方式
  • 如何使用Robotium / Android SDK找出堆栈顶部的Activity?
  • 此活动已经有一个由窗口装饰提供的操作栏(FEATURE_ACTION_BAR)
  • 如何在android中以编程方式配置Launcher活动?
  • 通过在包中传递新数据来恢复旧活动
  • 与服务中的活动(LocalService)进行通信 - Android最佳实践
  • Android如何注册整个活动主要内容视图的OnTouchEvent?
  • 我认为这基本上是扩大了方法的范围,但官方的更新日志并没有说什么。

    正如你在void onAttach(Activity)日志中看到的那样,他们已经删除了void onAttach(Activity)void onAttach(Activity)但是他们添加了一个新名称,并且在Android官方文档中已经弃用了。

    正如richq所评论的, Fragment的支持版本也不赞成onAttach(Activity),并且有一个onAttach(Context),可以在所有的Android版本上使用,直到史前版本。

    要适应这个新的更改,您可以按照以下步骤操作:

    • 将onAttachcallback的参数types从Activity更改为Context 。 由于未知的原因,这种修改导致在片段生命周期中onAttach(Context)方法不再被调用。

    • onAttach方法中的代码移动到onCreate因为它仍然被执行。

    有了这个修改,应用程序就像以前一样运行。 没有额外的import陈述是必需的。

    在这个变化发生之前,一个片段只能被附加到一个活动上。 在这个变化之后,Google也可以将片段附加到服务上。 就像Facebook聊天头的工作方式一样,他们也可以在活动之外进行分组。