【问题标题】:When should I use Loaders? and when asynctask? (Android)我什么时候应该使用装载机?什么时候异步任务? (安卓)
【发布时间】:2014-05-17 10:06:06
【问题描述】:

我还是一头雾水。我已经阅读了几个 Android 中的加载器和异步任务教程,但在某些情况下我无法理解一些差异。例如:

如果没有 Asynctask 或 Loader 提供的信息,您的应用将无法继续运行

  • 如果您需要来自 MySQL 数据库的信息,什么会更好?
  • 还有...如果您需要 SQLite 数据库中的信息怎么办?
  • 也许,您可能需要来自 url 的数据。

您的应用可以在没有 Asynctask 或 Loader 提供的信息的情况下继续运行

  • 如果您需要来自 MySQL 数据库的信息,什么会更好?
  • 还有...如果您需要 SQLite 数据库中的信息怎么办?
  • 也许,您可能需要来自 url 的数据。

如果你认为我们必须提到更多的差异或其他情况,你可以写它。

【问题讨论】:

  • 如果您有疑问,您可以随时使用 AsyncTaskLoader。

标签: android sqlite android-asynctask loader


【解决方案1】:

好吧,它们都用于执行异步操作,如果没有信息,您的应用是否可以继续运行并不重要。即使您的应用可以在没有数据的情况下继续运行,您仍然需要对其进行异步处理以避免出现 ANR 消息。

选择 Loader 或 AsyncTask 的一个原因是您需要获取数据更新。 Loaders 的优势在于它们会跟踪您正在访问的数据,并在数据更改时提供新的结果。

其他区别在于,使用 Loaders,您不必担心配置更改(例如方向更改)。 LoaderManager 会为您处理这些。使用 AsyncTask,您需要自己处理。

甚至还有一个 AsyncTaskLoader,它可以做 AsyncTask 的工作,但具有 Loaders 的好处。

AsyncTask 的优点是使用非常简单。如果您不需要加载或监视数据,而只是在后台处理某些内容。 AsyncTask 还是不错的选择。

【讨论】:

    【解决方案2】:

    游标只是用来重新连接到最后一个游标,因为它因某种原因被中断。它们通常设计用于片段或活动。

    装载机文档:

    它们可用于每个 Activity 和 Fragment。 它们提供数据的异步加载。 他们监控数据的来源,并在内容发生变化时提供新的结果。 在配置更改后重新创建时,它们会自动重新连接到最后一个加载程序的光标。因此,他们不需要重新查询他们的数据。

    Asynctask 更可能是一个包装器,其中包含访问 mainUI 和后台线程的方法的整个子集。

    【讨论】:

      猜你喜欢
      • 2021-09-07
      • 1970-01-01
      • 2012-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-22
      • 1970-01-01
      • 2019-01-28
      相关资源
      最近更新 更多