问题标签 [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 投票
3 回答
18409 浏览

android - Activity 完成时如何取消 AsyncTask?

在我的活动中,我使用了多个 AsyncTask 类。

Activity 完成时如何取消 AsyncTask?

0 投票
13 回答
46934 浏览

android - 如何在屏幕旋转期间处理 AsyncTask?

我阅读了很多关于如何保存我的实例状态或如何处理我的活动在屏幕旋转期间被破坏的内容。

似乎有很多可能性,但我还没有弄清楚哪一个最适合检索 AsyncTask 的结果。

我有一些 AsyncTasks 只是再次启动并调用活动的isFinishing()方法,如果活动正在完成,它们将不会更新任何内容。

问题是我有一个任务向 Web 服务发出请求,该请求可能会失败或成功,并且重新启动任务会导致用户蒙受经济损失。

你会如何解决这个问题?可能的解决方案有哪些优点或缺点?

0 投票
1 回答
216 浏览

android - Android 上最“抗死”的组件是什么?

我正在寻找最合适的类作为从我的活动调用的 AsyncTasks 的调度程序。

我认为它可能是其中之一:

  1. 应用程序的子类;
  2. 服务的子类;
  3. 我自己的静态东西。

至于我 - 实施第三个选择更简单。但问题是它会比服务或应用程序更“抗死”吗?此外,什么会活得更久也很有趣——应用程序还是服务?我的猜测是,只要应用程序(Android 中的任务)进程存在,应用程序就会存在。

所以基本上我需要根据它们的“抗死亡”质量来划分这些选项,因为我想依赖最“静态”的东西。

更新:

最初这个问题是在2010年提出的,当时 (1) Android 是开发人员的新平台,并且 (2) Google 文档对应用程序组件生命周期和整个应用程序流程生命周期过于含糊(在某些情况下甚至具有误导性) .

0 投票
2 回答
6330 浏览

android - Android:下载大文件

我正在尝试从 Internet 下载大文件 (>20Mb)

如果我取消注释行

下载进度条对话框关闭 7-15% 后,我看到“完成!” 在日志中。为什么?

0 投票
7 回答
61100 浏览

android - Android线程和数据库锁定

我们AsyncTasks用来访问数据库表和游标。

不幸的是,我们偶尔会看到有关数据库被锁定的异常。

有没有人有一个通用的代码示例,该代码从一个不同的线程写入数据库,而不是一个读取,我们如何确保线程安全。

我的一个建议是使用 a ContentProvider,因为这将处理来自多个线程的数据库访问。我要看看这个,但这是处理此类问题的推荐方法吗?考虑到我们在前面或后面谈论,它似乎相当重量级。

0 投票
4 回答
22241 浏览

android - 在后台线程完成之前,Android ASync 任务 ProgressDialog 不会显示

我有一个 Android 活动,它从 URL 中获取 RSS 提要,并使用 SAX 解析器将 XML 中的每个项目粘贴到一个数组中。这一切都很好,但正如预期的那样,需要一些时间,所以我想使用 AsyncActivity 在后台执行此操作。我的代码如下:

我打电话来onCreate()

该行items = parser.getItems()工作正常 -items作为包含 XML 中每个项目的数组列表。我面临的问题是,在启动活动时,我创建的 ProgressDialog直到onPreExecute()方法完成后才会显示。doInBackground()即我得到一个黑屏,长时间的停顿,然后是一个完全填充的列表,其中包含项目。为什么会发生这种情况?为什么不绘制 UI、显示 ProgressDialog、解析器获取项目并逐步将它们添加到列表中,然后 ProgressDialog 消失?

0 投票
1 回答
2902 浏览

android - ProgressDialog 直到 AsyncTask 完成后才会显示

我试图显示一个不确定的 ProgressDialog,而 AsyncTask 绑定到 RemoteService。首次创建服务时,RemoteService 会构建用户联系人列表。对于一长串联系人,这可能需要 5~10 秒。

我遇到的问题是,在 RemoteService 建立它的联系人列表之前,ProgressDialog 不会显示。我什至尝试放入一个 Thread.sleep 以让 ProgressDialog 有时间显示。使用 sleep 语句,ProgressDialog 加载并开始旋转,但一旦 RemoteService 开始工作,就会锁定。

如果我只是将 AsyncTask 变成虚拟代码,让它休眠一会儿,一切正常。但是当任务必须做实际工作时,就像 UI 只是坐着等待。

关于我做错了什么的任何想法?

编辑:添加 onCreateDialog

0 投票
1 回答
1266 浏览

android - Android TabActivity 中的奇怪选项菜单行为

我有一个TabActivity有四个选项卡(每个都是它自己的活动)。每个选项卡都定义了自己的onCreateOptionsMenu(在某些情况下,onPrepareOptionsMenu)。加载每个选项卡时,将AsyncTask启动 an 以检索填充该选项卡列表所需的数据。

如果我非常快速地在选项卡之间切换(当它们仍在加载时)然后按下菜单按钮(当当前选项卡AsyncApiTask仍在运行时),我会出现错误的选项菜单。

例如,假设FooActivity(选项卡 1)有一个带有“刷新”项的选项菜单,而BarActivity(选项卡 2)有一个带有“查看全部”项的选项菜单。如果我启动应用程序(选项卡 1 处于活动状态),快速切换到选项卡 2,然后点击菜单,有时会显示“刷新”项(而不是预期的“查看全部”项)。

此外,虽然这种奇怪的行为有时只发生在第一次按下菜单时(后来按下显示正确的项目),但有时它会“卡住”,并且每次按下都会出现错误的项目,直到我切换标签。

知道会发生什么吗?我以前没有听说过这种情况,也找不到任何好的建议。

0 投票
2 回答
10008 浏览

android - AsyncTask 线程规则 - 真的只能使用一次吗?

AsyncTask 的文档中,它给出了以下与线程相关的规则:

  • 该任务只能执行一次(如果尝试第二次执行将引发异常。)

这意味着每次你想使用它时都必须创建一个新的类实例,对吧?换句话说,必须这样做:

或者相反,您不能执行以下操作:

有人可以验证这是一个准确的解释吗?

我意识到我在打字时几乎只是为自己回答了这个问题……但这对我来说并不是很明显,所以我认为尽管如此,发布它还是很有用的。

0 投票
2 回答
14214 浏览

android - 从 AsyncTask 获取对调用活动的引用(不作为内部类)

是否有可能从不是调用 Activity 类的内部类的 AsyncTask 中获取对启动 AsyncTask 执行的 Activity 实例的引用?

我知道这个线程,但是它并没有完全解决如何引用调用活动。有些人建议将 Activity 的引用作为参数传递给 AsyncTask 构造函数,但是据报道,这样做总是会导致 NullPointerException。

所以,我很茫然。我的 AsyncTask 提供了强大的功能,我不想在每个想要使用它的 Activity 中将它复制为内部类。必须有一个优雅的解决方案。