问题标签 [android-asynctask]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
801 浏览

android - 安卓异步任务

有一个像这样的循环的异步任务是一个好习惯吗?

因为我需要等待我的活动​​和服务需要与 APi 通信。

谢谢

0 投票
0 回答
1896 浏览

android - 干净地处理 ASP.NET 异步页面上的 AsyncTimeout

根据这篇文章

始终调用 Begin 事件处理程序

我直到最近才真正理解的 AsyncTimeout 的第二个含义是始终调用已注册异步任务的开始事件处理程序,即使页面在 ASP.NET 开始执行该任务之前已经超时。

在这种情况下,剩下的任务基本上就注定了。该页面已经超时,但 ASP.NET 仍将执行为所有已注册任务调用 begin 事件处理程序的动作,然后立即调用其相应的超时事件处理程序。

AsyncTimeout 并不意味着异步任务取消

在可能的情况下,一旦整个页面超时已经触发,我应该注意不要启动其他任务,并且一旦发生超时,我应该取消剩余的正在运行的任务。这是推荐/安全的吗?鉴于异步任务可能在多个位置,我将如何彻底取消任何 HttpWebRequest.BeginGetResponse 调用?例如,如果我在 BeginGetResponse 调用中,我应该返回什么来让 IAsyncResult 安全地停止其轨道中的处理?相同的准则是否适用于 SqlCommand.BeginExecuteReader?

我从几个示例和我自己的补充中整理了一个示例代码:

更新:我还应该提供其他信息吗?

0 投票
6 回答
10822 浏览

android - 外部类中的 Android AsyncTask

我一直在开发一个应用程序,AsyncTask当它在内部类中时,我设法让它正常工作。

现在,我正在重构代码,以便它AsyncTask位于一个单独的类中,但我想知道,ProgressDialog一旦任务成功完成,我如何杀死并启动一个新的 Activity?我已经尝试在该onPostExecute(..)方法中启动一个新的 Activity,但我知道这行不通。


在 AsyncTask 的构造函数中将我的 UI 线程活动作为参数传递似乎不起作用:

我一直得到一个NullPointerException,也许我错过了一些东西,但这对我不起作用。

0 投票
2 回答
445 浏览

android - HTC Sense 上的 AsyncTask 错误

我正在使用具有 HTS 感的 HTC Hero。
我的经验是有时 AsyncTask 不会在 execute() 上运行 doInBackground 方法;
它只出现在我的英雄身上。有人遇到过同样的问题吗?

/ 马丁

0 投票
1 回答
177 浏览

java - Java 计时器 - 调用的函数未完成!

所以我有一个TimerTask task调用onTimerComplete()它的函数run()

onTimerComplete()看起来像这样:

我做了一个Timer t,我安排TimerTaskt.schedule(task, 2000);

问题是,当计时器到时并且任务运行我onTimerComplete()但该功能没有完成。它运行myFunc1()但永远不会完成它也不会调用myFunc2()

但是,如果我onTimerComplete()直接打电话,一切正常。

这是怎么回事?

0 投票
1 回答
3265 浏览

java - 在 AsyncTask 中使用 HttpClient 获取数据(响应体)并将 AsyncTask 之外的数据返回到 UI 线程

基本上我想知道我如何能够完成我在该主题中所写的内容。我浏览了很多关于 AsyncTask 的教程,但我无法让它工作。我有一个小表单(EditText),它将获取用户在那里输入的内容,并将其转换为 url 查询,供应用程序查找,然后显示结果。

我认为似乎可行的是:在我的主要活动中,我有一个名为 responseBody 的字符串。然后用户单击搜索按钮,它将转到我的搜索功能,并从那里调用带有 URL 的 GrabUrl 方法,该方法将启动 asyncdata,当该过程完成时,onPostExecute 方法将使用函数 activity.this.setResponseBody(content )。

这就是我的代码看起来最重要的部分(我认为)。

0 投票
4 回答
10735 浏览

android - ProgressDialog 在外部 AsyncTask 中不起作用

我开始认为要让 ProgressDialog 工作,AsyncTask 必须是 Activity 类中的内部类。真的?[稍后编辑......答案是错误的,我不确定这是一个错误还是什么。我使用的是安卓 1.5。我将阅读服务。]

我有一个使用数据库来操作信息的活动。如果数据库已填充,一切都很好。如果没有填充,那么我需要从网站下载信息,填充数据库,然后访问填充的数据库以完成 onCreate 中的视图。

问题是无法确定 AsyncTask 线程何时完成填充数据库,我收到以下强制关闭错误消息:对不起!应用程序意外停止。我单击强制关闭按钮,后台 AsyncTask 线程继续工作,数据库被填充,一切正常。

我需要摆脱该错误消息,并且需要一些有关如何执行此操作的帮助。这是一些伪代码:

在一个单独的文件中:

这是来自模拟器的堆栈跟踪:

我究竟做错了什么?

雪花先生,

试过:

Activity.this 被标记为错误:范围内没有 Activity 类型的封闭实例可访问

我在想我需要 FillDB 扩展 Activity,然后在 FillDB 中创建一个私有类来扩展 AsyncTask?那行不通。无法保证 FillDB 活动何时启动并且不能使用 startActivityForResult,因为 AsyncTask 完成后没有返回任何结果。

更新:尝试在调用类中创建一个私有类。仍然无法显示 ProgressDialog。错误之一是:无法添加窗口——令牌 null 不适用于应用程序。我不知道指的是什么令牌。

0 投票
5 回答
13495 浏览

android - AsyncTask、RejectedExecutionException 和任务限制

我正在从远程服务器获取大量缩略图,并使用 AsyncTask 在网格视图中显示它们。问题是,我的网格视图一次显示 20 个缩略图,因此创建 20 个 AsyncTask 并启动 20 个执行,每个缩略图一个。

RejectedExecution的代码出现异常。我记得在某处读到 AsyncTask 一次可以在其队列中拥有的任务数量是有限制的,我可能会遇到这个问题。这个栏被取消了吗?

有没有办法增加这个限制?忽略这个异常是否安全?(通过有一个空catch(RejectedException e){}块?)

我在 Android 1.6 模拟器和我的代码中的 API 级别上运行此代码(minSDKVersion 为 3)。[编辑:添加了 SDK 和 API 级别信息]

0 投票
1 回答
1734 浏览

android - Android 1.5:调用 get() 方法时未调用 Asynctask doInBackground()

我遇到了异步任务执行方式的问题。这是问题代码:

我在这里所做的是创建一个新的 asynctask 对象,将其分配给 firstTask 然后执行它。然后,我想在第一个异步任务完成后触发一个单独的异步任务,并确保它返回一个成功值(在本例中为 1)。这在 Android 2.0 及更高版本上完美运行。但是,我正在使用 Android 1.5 进行测试,并且开始出现问题。上面的代码将运行第一个异步任务,但 doInBackground() 从未被调用,尽管 onPreExecute() 被调用。如果我要在没有 get() 方法的情况下执行第一个任务,则调用 doInBackground() 并且一切都按预期工作。除了现在我没有办法确定第一个任务是否成功完成,以便我可以告诉第二个任务执行。假设这是 Android 1.5 上的 asynctask 错误是否安全?特别是因为 API (https://developer.android.com/reference/android/os/AsyncTask.html#get%28%29)说get方法从API 3开始就已经实现了。有没有办法解决这个问题?或者另一种方法来确定第一个任务已经完成?

0 投票
6 回答
72639 浏览

android - 即使 Activity 已销毁,AsyncTask 也不会停止

我有一个AsyncTask对象,它在创建时开始执行Activity并在后台执行操作(最多下载 100 张图像)。一切正常,但有一种我无法理解的特殊行为。

例如:当 android 屏幕的方向发生变化时,它Activity会被销毁并再次创建。所以我重写了该onRetainNonConfigurationInstance()方法并将所有下载的数据保存在AsyncTask. 我这样做的目的是不让AsyncTask每次运行都Activity在方向更改期间被破坏-创建,但正如我在日志中看到的那样,前一个AsyncTask仍在执行。(虽然数据保存正确)

我什至试图取消活动AsyncTaskonDestroy()方法,但日志仍然显示AsyncTask为正在运行。

这是一种非常奇怪的行为,如果有人能告诉我停止/取消AsyncTask.