【问题标题】:Android application logical classes: service, handler, ...?Android 应用程序逻辑类:服务、处理程序、...?
【发布时间】:2014-09-04 22:43:43
【问题描述】:

在过去的 2 个小时里,我一直在尝试为我的问题找到一个简单而清晰的解决方案。希望有人可以在这里帮助我。

我正在开发我的第一个真正的 android 应用程序。因此,我当然想将我的活动 (UI) 与应用程序逻辑分开,并拥有一个漂亮的结构化包树。但是经过一些研究我有点困惑,对于不需要用户界面的背景对象,什么是正确的选择:正常 java 类、服务、线程、处理程序..?

我想做什么:

我想创建一个对象,它的方法可以被活动调用。另一方面,这些方法应该调用一些任务(例如检查服务器上的更新或创建新消息并将其发送到服务器)。

我对此有所思考:

第三层:用户界面(可能是活动,对吧?)

第二层:一些对象将处理用户输入和调用:

第一层后台任务,例如下载东西,(我想到了 ASyncTasks)

首先我认为那些来自第二层的对象应该是服务。但是没有必要在我的应用程序中长时间运行一个进程来永久地做一些事情。然后我考虑了普通的java类,但我认为这太容易了。处理程序?

希望我的问题足够清楚!也许我的基本概念已经错了?

【问题讨论】:

    标签: java android multithreading class android-intent


    【解决方案1】:

    编写高效代码有两个基本规则:

    • 不要做你不需要做的工作。
    • 如果可以避免,请不要分配内存。

    其实想了两个小时有点不够,但是……

    首先,我建议你阅读Performance Tips,这样你就可以想到设计阶段的表现,而不是当一切都完成时,应该重新编写以使其美观。

    那篇文章中的第一个提示是:避免创建不必要的对象。尽管面向对象的 OOP 很酷,但对于资源有限的移动设备来说就不是很好了。最好不要创建太多层。

    谈论服务、AsyncTasks 和其他:它们不是一个层。它们是并行的。但是,例如,如果您想要一个用于下载数据的 AsyncTask,它将在不同的活动中使用,您肯定应该在单独的类中实现它。您将能够从不同的地方访问代码并避免memory leaks(例如,在屏幕旋转或其他配置更改期间)。

    有时不同的活动(或片段)应该使用相同的代码片段。在这种情况下,我将创建一个基 Activity 类并从该类而不是默认的android.app.Activity 扩展我的所有活动。

    这是开始。但根据我自己的经验,我可以说,无论你如何思考或阅读,你都不会在第一次尝试时创作出杰作。一切都伴随着经验。在纸上看起来很棒的想法在您实施时可能变得不适用或效率低下。有些人学习和提高,有些人没有。祝你好运。

    【讨论】:

    • 感谢您的回复!从来没有从这个角度考虑过这个话题。在学校里,他们告诉我们要充分利用 OOP。所以我明白了这一点。我也应该在活动中编写我的应用程序的逻辑吗?
    • 尝试将与该活动相关的所有内容保留在活动中,尤其是需要活动Context 的方法。但这并不意味着你不能继承或其他什么。合理地做就行了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-10
    • 2016-10-11
    • 1970-01-01
    • 2013-03-09
    • 1970-01-01
    • 2013-03-19
    相关资源
    最近更新 更多