问题标签 [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.
java - 如何检查Android上的互联网访问?InetAddress 永远不会超时
我有一个AsyncTask
应该检查对主机名的网络访问。但是doInBackground()
永远不会超时。有人有线索吗?
android - Android 上的 AsyncTask 和错误处理
我正在将我的代码从 using 转换Handler
为AsyncTask
. 后者非常擅长它的工作 - 在主 UI 线程中异步更新和处理结果。我不清楚的是,如果AsyncTask#doInBackground
.
我这样做的方式是有一个错误处理程序并向它发送消息。它工作正常,但它是“正确”的方法还是有更好的选择?
我也明白,如果我将错误处理程序定义为一个活动字段,它应该在 UI 线程中执行。但是,有时(非常不可预测)我会收到一个异常,说明从中触发的代码Handler#handleMessage
正在错误的线程上执行。我应该初始化错误处理程序Activity#onCreate
吗?放置似乎是多余的,但它执行非常可靠runOnUiThread
。Handler#handleMessage
android - Android - AppWidgets、AlarmManager 和 AsyncTask
我在使用AlarmManager
生成的广播更新应用小部件时运气不佳。这就是我所做的:
初始化AlarmManager
_AppWidgetProvider#onEnabled
我还定义了广播接收器,它只监听由AlarmManager
. 当更新被触发时,代码运行AsyncTask
进行网络调用。当AsyncTask
完成 ( onPostExecute
) 时,它使用先前获得的实例AppWidgetManager
来更新小部件。这一切实际上运行良好,直到在日志中我看到消息"Process com.foo.myapp (pid 12345) has died"
,之后AlarmManager
再也不会触发另一个更新。
我是否需要进行某种检查以重新启动警报?例如,当用户访问小部件的父应用程序时?如果我的应用在请求过程中死机,如何确保我可以完成长时间运行的任务并返回到小部件?
java - AsyncTask 和上下文
因此,我正在使用带有 AsyncTask 类的 Android 开发我的第一个多线程应用程序。我正在尝试使用它在第二个线程中启动地理编码器,然后使用 onPostExecute 更新 UI,但我一直遇到正确上下文的问题。
我在主线程上使用 Contexts 时有点步履蹒跚,但我不确定 Context 是什么或如何在后台线程上使用它,而且我还没有找到任何好的例子。有什么帮助吗?这是我正在尝试做的摘录:
由于上下文不正确,它一直在第六行失败。
android - 如何使用 AsyncTask 和 Timer 获取 XML?
为了重复从服务器获取 XML 数据,我尝试按照Mark Murphy 的建议使用 AsyncTask 和 Timer 。
我收到以下错误:
我在 Windows 上使用带有 Eclipse 的 SDK 1.5。
我查看了文档、StackOverflow 和 Android 开发人员组,但我不清楚是什么导致了错误或如何修复它。
我可以一次获取数据——即没有异步和计时器——并通过 SAX 解析它而不会出现问题。
完整的应用程序代码如下。
请原谅任何天真的错误:我对 Android 很陌生。
android - Android AsyncTask 上下文行为
我一直在使用 Android 中的 AsyncTasks,我正在处理一个问题。
举一个简单的例子,一个带有一个 AsyncTask 的 Activity。后台的任务没有做任何壮观的事情,它只是休眠了 8 秒。
在 onPostExecute() 方法中的 AsyncTask 结束时,我只是将按钮可见性状态设置为 View.VISIBLE,只是为了验证我的结果。
现在,这非常有效,直到用户决定在 AsyncTask 工作时(在 8 秒的睡眠窗口内)改变他的手机方向。
我了解 Android 活动的生命周期,并且知道活动会被销毁并重新创建。
这就是问题所在。 AsyncTask 指的是一个按钮,并且显然包含对首先启动 AsyncTask 的上下文的引用。
我希望,这个旧上下文(因为用户导致方向更改)要么变为空,并且 AsyncTask 抛出一个 NPE 以引用它试图使其可见的按钮。
相反,没有抛出 NPE,AsyncTask 认为按钮引用不为空,将其设置为可见。结果?屏幕上什么都没有发生!
更新:我已经通过保持WeakReference
活动并在配置更改发生时切换来解决这个问题。这很麻烦。
这是代码:
尝试执行它并在 AsyncTask 工作时更改您的手机方向。
android - Android - 使用 ArrayAdapter 一次向 ListView 添加和显示项目
我正在使用 ArrayAdapter 将项目添加到自定义 ListView 并在我的 Android 应用程序中显示结果。我遇到的问题是 ArrayAdapter 似乎要等到所有项目都在其中才显示视图。也就是说,当我将项目添加到 ArrayAdapter 并调用 notifyDataSetChanged 时,它不会更新 ListView 以显示添加的项目。它等到所有项目都被添加并在显示项目之前调用 GetView。
我想做的是在将它添加到 ListView 后立即显示该项目。这可能吗?
我相信相关代码如下:
如您所见,即使我在 add 方法之后调用 notifyDataSetChanged,它实际上并没有更新视图。在完成上述循环后,视图最终被更新(根据我所知道的,这是因为在这部分代码完成之前不会调用 GetView)。
我试图重写自定义 ArrayAdapter 的 add 方法,但没有成功,因为我无法访问该方法中的视图。
欢迎任何帮助:)
巴拉
android - 如何在 Android 上安排长时间(耗时)的操作?
例如,我们在 SomeActivity 中,该活动有一个按钮,用于调用将文件从一个目录移动到另一个目录(我们称之为作业)。
在黑莓上,我会:
- 推送一个不可取消的弹出窗口(对话屏幕),说“请稍候......”
- 启动一个完成任务的线程
- 在线程完成时关闭弹出窗口
这种方法 99.99% 可以保证我们在任务结束后保持在同一个屏幕上,用户只是看到弹出窗口并等待任务完成。设备旋转或任何不会破坏所需工作流程的东西。
在 Android 上,情况发生了变化。我知道可能会提供 AsyncTask 来解决我的问题。甚至还有一个很好的例子来说明它应该如何使用。但由于无法保证 Activity 实例的生存时间,因此应在 onSaveInstanceState 上取消 AsyncTask(并在 onRestoreInstanceState 上重新启动)。这意味着使用 AsyncTask 并不能保证我们一旦开始就能够完全完成工作。在某些情况下,作为发送创建用户的 http 发布请求,我不想在重新运行 AsyncTask 时遇到“用户已存在此登录”的麻烦。这是可能的,因为 AsyncTask 可以在请求已经发送时被中断(并且服务器实际上正在做它的工作 - 创建一个新用户),但是 AsyncTask 在我们得到响应之前被取消。
Android上是否有任何解决方案来获得上述类似BB的行为?
java - When to use a Service or AsyncTask or Handler?
Can someone tell me the TRUE difference?
java - 我有一个活动。在此活动中,我执行了 AsyncTask ,但它不起作用
基本上,我的目标是:
- 每分钟左右不断将纬度/经度发布到我的网站。
- 当然,我想在另一个线程中执行此操作,所以它不会弄乱我的 UI 线程。这个 AsyncTask 应该可以解决这个问题……但它引发了一个错误,我不知道为什么。
你能做些什么来实现我的目标?这非常简单……只需在后台每分钟扫描一次位置并发布到网络上。
顺便说一下,我的 onCreate 方法是这样的。基本上就是这样。