【问题标题】:Handling threads in Android在 Android 中处理线程
【发布时间】:2011-07-20 12:29:12
【问题描述】:

我有一个应用程序,它有一些后台进程,比如从服务器下载 XML 并解析它,我正在线程中执行这些任务。

问题出现在有时一个线程长时间得不到 CPU 时间时,可能是 15 分钟到几个小时之间的任何时间,然后线程开始正常运行。

我应该如何处理?

【问题讨论】:

  • 通常我会说使用 asynctask 但你说它可能需要 15 分钟 + 来获取 xml ?究竟需要 15 分钟以上,是下载 XML 还是某种长时间运行的过程。 15 分钟以上是很长的时间..

标签: java android


【解决方案1】:

为此使用 AsyncTask 类。

在此您可以在后台执行获取或处理,直到后台进程未完成,该类的另一个方法不会执行

查看此链接以获取教程和指南

http://www.vogella.de/articles/AndroidPerformance/article.html

http://developer.android.com/reference/android/os/AsyncTask.html

【讨论】:

  • 我使用了异步任务,但我的问题是我在 15 分钟后连续下载线程中的文件。但正如我们所知,处理器使用一些调度进程,每个线程一个接一个。所以有时在失去 CPU 时间时,我的应用程序线程很长一段时间都没有获得 CPU 时间。请告诉我如何才能重新获得 CPU 的注意力。
【解决方案2】:

使用 AsyncTask 类从服务器解析 XML

【讨论】:

    【解决方案3】:

    我对 AsyncTask 的体验不是很好,很长的操作比如 15 分钟会很糟糕(你会遇到UI interactionlimits 等问题)

    我建议您改为创建一个服务(IntentService 很容易使用),它会在完成后广播它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-26
      • 2011-07-24
      • 1970-01-01
      • 1970-01-01
      • 2012-03-31
      • 1970-01-01
      • 1970-01-01
      • 2013-04-07
      相关资源
      最近更新 更多