【问题标题】:Android Activity - Is it common to have a lot of code in one activity class?Android Activity - 在一个 Activity 类中有很多代码是否很常见?
【发布时间】:2012-04-04 12:00:32
【问题描述】:

我的一项活动似乎已经增长了很多,我觉得事情应该以某种方式更加面向对象。我认为它的发生是因为我只是在学习,因此不断添加不同的观点,看看事情是否有效。在不知不觉中,它已经变大了。

我对 LinearLayout、ViewFlipper、Button、TextView 等内容进行了子类化,并认为为这些类提供构造函数,这些类接受文本大小、字体、布局参数、背景颜色等参数可能有助于解决这种情况,实际上可能适合自己更倾向于 OOP 通用设计范式。这样做当然意味着我的构造函数将有大量的参数。

我想知道是否可以就上述这种方法获得一些反馈:我应该利用我的子类来实现更多的 OOP 设计,还是让某些活动自然而然地包含大量代码?谢谢!

【问题讨论】:

  • 这是 OOP,不仅仅是 Android/Java。

标签: android oop subclass android-activity


【解决方案1】:

我对 LinearLayout、ViewFlipper、Button、TextView 等内容进行了子类化,并认为为这些类提供构造函数,这些类接受文本大小、字体、布局参数、背景颜色等参数可能有助于解决这种情况,实际上可能适合自己更倾向于 OOP 通用设计范式。

这不是一个好主意。小部件并非旨在作为一种配置方式进行扩展。此外,这不是必需的,因为您列出的所有内容都可以(并且应该)在 XML 布局资源中定义。

有些活动自然有很多代码吗?

一些活动对大量代码负责。欢迎您将其中一些逻辑提取到其他类中,但它们不一定是小部件的子类。您的Adapters、各种...ListenersAsyncTasksLoader.Callbacks 等等可以经常被拉出到单独的公共类中,而不是让您的活动实现无数接口或拥有一堆内部类。

【讨论】:

  • 感谢您的回复。正如一些人之前问过我的那样(至于我为什么不在 xml 布局中构建东西)我会再次回应并说我用代码构建它的原因是我不知道会发生什么事情时间。进入活动的许多信息来自 sqlite 数据库。一般来说,我的大部分观点都是动态的,并且会根据其他事件、回调、侦听器等发生变化。
  • 在谈到带有代码重构的 OOP 时,我认为从 Activity 中隔离像 AsyncTask 这样的内部类并不是一个好习惯。除了增加复杂性(例如解决类之间的引用以进行开发)之外,我看不到您可以通过这样做获得任何真正的好处。我同意大型活动课程(数千行)看起来很讨厌。但是Java有它的理由有内部类语法。在进行代码反应时,更多地考虑问题抽象级别,而不是简单地在代码级别从 Activity 中拉出内部类。
  • 是的,现在我的活动类是 242 行代码,包括空格和其他什么 - 只是根据 eclipse 说的行数。我不知道这是否被认为是正常的或平均的纯粹是代码(根本不是 xml),而且非常复杂。
  • 针对内部 AsyncTasks 的一点是内存泄漏,因为内部类将 引用 Activity。至少您必须确保将其设为静态(只需将其移至其他 java 文件的一个步骤)。这篇文章android-developers.blogspot.com.ar/2009/01/… 充满了关于它的信息(尤其是 WeakReference 点)。
猜你喜欢
  • 2015-10-29
  • 2021-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-17
  • 2015-07-26
  • 2013-01-05
相关资源
最近更新 更多