【问题标题】:ReExecute AsyncTask重新执行异步任务
【发布时间】:2015-11-20 10:32:41
【问题描述】:

我的项目中有几个AsyncTask 用于从某些给定的 api 中获取数据。 我按照以下步骤操作。

1) execute an Async Task and try to grab datas from there.
2) check conditions for internet and server down
3) if any issue in api or internet or server then show dialog [custom from self made class]
4) dismiss button for canceling the dialog and go back to the working stage of `app may be even by closing the activity`

我的问题是我想保留一个Button “重试”,以便它重新执行AsyncTask。 我搜索了通过AsyncTask,但它似乎毫无价值,因为我得出结论AsyncTask 不能通过。所以我不得不多次重复相同的代码cancel(true)

如果有人能用这个代码重用概念给我解决方案,那将非常有用。

【问题讨论】:

  • 从函数创建和执行 AsyncTask 然后从您的DialogListener 调用它有什么问题?
  • 如何从单个函数创建各种异步任务,并在其上运行各种上下文?任何简单的例子都将不胜感激

标签: android android-asynctask code-reuse cancel-button


【解决方案1】:

您不能“重试”同一个 AsyncTask 对象 - 您只能调用 AsyncTask#execute() 一次。但是,当用户决定重试下载任务时,您可以创建一个新的 AsyncTask 实例。

【讨论】:

  • 是的,我想在按下重试按钮时创建异步任务实例。但是该怎么做呢?
  • 尝试将您的原始 AsyncTask 代码放入一个函数中,并在按下按钮时调用它。确保在执行此操作之前取消任何以前的任务。
  • 我有各种异步任务,我怎么知道具体的呢?我必须为每个人都这样做。
【解决方案2】:

通过使用重试按钮来创建实现异步任务的类的新对象并执行该新对象,从而解决了问题。

【讨论】:

    猜你喜欢
    • 2016-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多