【问题标题】:How to run background tasks in Android如何在 Android 中运行后台任务
【发布时间】:2015-08-18 18:36:52
【问题描述】:

我正在尝试设计一个并行执行两个不同任务的应用程序 当用户按下活动中的按钮时,每个任务开始执行“所以我有三个活动,其中两个应该执行一些任务,第三个应该收集结果”。

当用户按下 Activity 上的按钮时,它将调用一个线程,然后加载下一个 Activity

在第三个活动中,我有一个按钮“我称之为发送按钮”,它应该保持非活动状态或禁用状态,直到所有线程完成它们的工作,因此此时它将被启用,并且此活动包含纯文本以显示这些结果两个线程,当用户按下此按钮时,它将以纯文本形式将信息发送到网站。

我的问题是:如何在不同的活动中运行线程并将其结果发送给另一个活动?以及如何在所有线程完成工作之前禁用“发送按钮”。

我尝试在第三个活动的 onCreate 方法中使用全局变量创建一个 while 循环,但它使应用程序崩溃并且活动没有启动

【问题讨论】:

  • 在任何给定时间只能激活一项活动。为什么不能从拥有按钮的 Activity 中运行不同的线程?
  • 你应该看看asyncTask类。
  • @Joni,,你是对的,但我需要在第一个活动中使用 ImageProcessing 方法,而用户在第二个活动中输入他的信息,并且在后台,一个方法将被调用“在一个线程中" 来确定他的位置

标签: java android multithreading


【解决方案1】:

您有两种选择来执行长时间运行的后台任务:

  • 使用执行后台工作的线程,使用单线程访问结果
  • 使用进行计算的服务

根据您的实际用例,该服务是首选。

【讨论】:

    【解决方案2】:

    仅在您需要用户与您的应用程序交互时使用 Activity。。否则,您可以使用 AsyncTask 为您的作业调用这两个线程(如果您希望系统为您处理工作线程。除非您没有即时进行任何配置更改 -> 性能下降)。

    请记住,您应该仅在后台作业运行露几秒时才使用 AsyncTask。如果您有一个长时间运行的作业,请使用具有自定义线程的服务。

    希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      您可以使用 AsyncTask。 AsyncTask 是一个用于在没有线程的情况下执行后台进程的类。您可以轻松检查该过程是否完成。检查此Tutorial。这可以帮助您了解如何使用 AsyncTask 运行后台进程。

      【讨论】:

      猜你喜欢
      • 2020-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多