java - Android 应用程序逻辑类 : service, 处理程序,...?

标签 java android multithreading class android-intent

在过去的 2 个小时里,我一直在努力为我的问题找到一个简单明了的解决方案。希望有人能在这里帮助我。

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

我想做的事情:

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

我对此有一些想法:

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

第 2 层:一些对象 将处理用户输入并调用:

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

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

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

最佳答案

There are two basic rules for writing efficient code:

  • Don't do work that you don't need to do.
  • Don't allocate memory if you can avoid it.

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

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

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

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

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

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

关于java - Android 应用程序逻辑类 : service, 处理程序,...?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25676101/

相关文章:

android - Android Studio错误:程序类型已存在:org.objectweb.asm.Edge

java - editText.getText().toString() 检索字符串全部大写

java - 为什么C和Java代码之间的socket通信只收到64K数据?

java - 在 Android Studio 应用程序中获取当前位置

java - Eclipse 显示 "Maven Configuration Problem: Unknown"

java - 为什么我的 SensorEventListener 实现不起作用?没有收到 onSensorChanged 回调

Java 泛型 - 令人困惑的行为

Python Multiprocessing : Pool. map() 似乎根本不调用函数

java - JDBC 基本概念,池和线程

java - 如何优化 Tomcat 上运行的 Java 进程