Android:AsyncTask建议:私有类还是公共类?

时间:2011-01-28 01:23:42

标签: android android-asynctask

我目前正在团队中开发一些Android应用程序,在过去的几个月中我们使用了两种不同的方法(一种是我个人喜欢的,另一种是另一种开发者喜欢的)。

虽然到目前为止结果是相同的,但这让我感到疑惑......我们应该:

  • 将AsyncTasks用作使用它们的Activities中的私有类。
  • 或使用AsyncTasks作为接收活动上下文的单独公共类

Google建议使用哪种方法?

您的经验对此有何看法(优点,缺点,问题)?

2 个答案:

答案 0 :(得分:35)

内部类适用于表示私有或以某种方式与封闭类密切相关的对象。偶尔使用内部类有技术原因(例如,模拟闭包)。他们还减少了命名空间污染。

内部类的一个缺点是,如果它们访问封闭类的私有成员(字段或函数),编译器将为这些成员生成访问器函数。语言纯粹主义者会争论这种封装的破坏是好事还是坏事。访问功能为每次访问增加了一些开销(这通常不是一个因素,但它确实存在)。另一个缺点是它使源文件更复杂,因此更难管理。 (我偶尔会在内部类中编辑一个函数,同时认为它在外部类中,反之亦然。)最后,内部类往往不可重用,而单独的类通常可以参数化以具有多种用途

这些优点和缺点是我的头脑。我相信其他人会有额外的想法。

更新:

在此Google IO video中,内部AsyncTask选项明确标记为错误选项。

答案 1 :(得分:7)

无关紧要,请使用对您的代码最有意义的内容。重要的是观察一个异步任务,该任务在活动被销毁后持有对活动的引用,或者隐式地作为活动的内部类,或者通过给予活动/上下文对象来显式。