【发布时间】:2011-01-28 01:23:42
【问题描述】:
我目前正在一个团队中开发一些 Android 应用,在过去几个月中我们使用了两种不同的方法(一种是我个人喜欢的,另一种是其他开发者喜欢的)。
虽然到目前为止结果是一样的,但这让我想知道......我们应该:
- 在使用它们的活动中将 AsyncTask 用作私有类。
- 或将 AsyncTasks 用作接收活动上下文的单独公共类
是否有 Google 推荐的任何方法?
您对此有何经验(优点、缺点、问题)?
【问题讨论】:
我目前正在一个团队中开发一些 Android 应用,在过去几个月中我们使用了两种不同的方法(一种是我个人喜欢的,另一种是其他开发者喜欢的)。
虽然到目前为止结果是一样的,但这让我想知道......我们应该:
是否有 Google 推荐的任何方法?
您对此有何经验(优点、缺点、问题)?
【问题讨论】:
内部类非常适合表示私有对象或与封闭类密切相关的对象。偶尔有使用内部类的技术原因(例如,模拟闭包)。他们还减少了命名空间污染。
内部类的一个缺点是,如果它们访问封闭类的私有成员(字段或函数),编译器将为这些成员生成访问器函数。语言纯粹主义者会争论这种封装的破坏是好事还是坏事。访问函数为每次访问增加了一些开销(这通常不是一个因素,但确实存在)。另一个缺点是它使源文件更复杂,因此更难管理。 (我偶尔会因为在内部类中编辑一个函数而认为它在外部类中而被刺痛,反之亦然。)最后,内部类往往不可重用,而单独的类通常可以参数化以具有多种用途.
这些优点和缺点不在我的脑海中。我相信其他人会有更多的想法。
更新:
在此 Google IO video 中,内部 AsyncTask 选项被明确标记为错误选项。
【讨论】:
没关系,使用对您的代码最有意义的东西。重要的是要注意在 Activity 被销毁后持有对 Activity 的引用的异步任务,或者隐式地作为 Activity 的内部类,或者显式地通过给定 Activity/上下文对象。
【讨论】: