java - 何时使用 Service 或 AsyncTask 或 Handler?

标签 java android service handler android-asynctask

谁能告诉我 TRUE 的区别吗?

最佳答案

我的经验法则是 AsyncTask 用于当我想做与单个 Activity 相关的事情时,而 Service 用于何时我想做一些在后台启动的 Activity 之后会继续的事情。

因此,如果我想在 Activity 中进行少量后台处理而不占用 UI,我将使用 AsyncTask。然后,我将使用该 Activity 中的默认 Handler 将消息传回,以确保在主线程上发生更新。在主线程上处理更新有两个好处:UI 更新正确发生,您不必太担心同步问题。

例如,如果我想做一个可能需要一段时间的下载,我会使用 Service。因此,如果我在我的应用程序中转到另一个 Activity 或完全转到另一个应用程序,我的 Service 可以继续运行并继续下载文件,以便在我返回我的应用程序时准备好。在这种情况下,我可能会使用 Status Bar Notification下载完成后,用户可以在方便时选择返回我的应用程序。

如果您将 AsyncTask 用于长时间运行的进程,您会发现在您离开 Activity 后它可能会继续,但是:

  • 如果处理完成时 Activity 处于后台,则在尝试使用结果等更新 UI 时可能会遇到问题。
  • 后台ActivityService更容易在需要内存时被Android杀死。

关于java - 何时使用 Service 或 AsyncTask 或 Handler?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2285680/

相关文章:

delphi - Delphi中同一个程序拥有多个NT服务

java - 如何创建一个可以作为窗口服务运行的java应用程序?

android - 有没有办法优雅地停止 init.rc 中的 android 服务(没有 SIGKILL)?

Java,在整数列表中找到交集

java - 在 Java 中对数字求和

java - 更好地设计构造函数中的初始化

android - 通过将 Imageview 左上角视为 (0,0) 来获取 Imageview 的 X,Y 坐标

android - android 中用于在社交媒体中共享的公共(public)库?

java - 露天 : Assigning the next tasks to specific users

android - 我的模拟器不能正常工作