Android应用程序逻辑类:服务,处理程序,......?

时间:2014-09-04 22:43:43

标签: java android multithreading class android-intent

在过去的2小时内,我一直试图为我的问题找到一个简单明了的解决方案。希望有人可以帮助我。

我正在开发我的第一个真正的 Android应用程序。所以我当然希望将我的活动(UI)与应用程序逻辑分开,并拥有一个很好的结构化包树。但经过一些研究后,我有点困惑,对于不需要用户界面的后台对象,正确的选择是什么:普通 java类,服务,线程,处理程序..?< / p>

我想做什么:

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

我对此有所了解:

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

第二层:一些对象将处理用户输入并致电:

第一层背景任务,例如下载的东西,(我想到ASyncTasks)

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

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

1 个答案:

答案 0 :(得分:3)

  

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

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

实际上,考虑两个小时有点不够,但是......

首先,我建议你阅读Performance Tips,这样你就可以在设计阶段考虑性能,而不是在一切都完成后再重新编写以使其美观。

该文章的第一个提示是:避免创建不必要的对象。虽然OOP在所有面向对象方面都很酷,但对于资源有限的移动设备来说并不是那么好。最好不要创建太多的图层。

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

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

这是开始的。但根据我自己的经验,我可以说,无论你怎么看待或阅读,你都不会在第一次尝试时创造出杰作。一切都伴随着经验。在实施它们时,在纸面上看起来很棒的想法可能变得不适用或效率低下。有些人研究和改进,有些人没有。祝你好运。