问题标签 [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.
android - 在内存不足的情况下保持 AsyncTask 存活?
我已经将主屏幕小部件编写为 ImageView,即。该代码生成整个小部件并将其作为位图写入 RemoteViews。在内存较低的较慢设备上,例如我的 G1,生成位图可能需要几秒钟,为了避免可怕的强制关闭,我将所有图形代码移到 AsyncTask 中。到目前为止,一切都很好。
但是,在内存非常低的情况下,AsyncTask 很容易在它完成生成位图之前被操作系统杀死,从而导致主屏幕上出现一个空白方块。所以在创建 AsyncTask 之前,它设置了 now + 5 秒的警报,并且在图形完成后,它会重置警报。这里的假设是,如果触发警报,则很可能进程被杀死,我们必须设置另一个 now+5 警报并重新开始。
这确实有效,但在内存极低的情况下,绘制小部件可能需要多次尝试(20 多秒),所以我添加了一个占位符沙漏图像,作为静态资源,它显示在主屏幕上,直到真实图像准备好.
我的问题是:这是最好的方法吗?有没有办法(礼貌地)要求操作系统在 AsyncTask 完成之前不要杀死它(因为杀死它实际上会导致更多的系统资源浪费)?
我知道如果一个进程被归类为“可见”,那么 Android 不会杀死它,除非作为最后的手段。但我不知道如何将 AsyncTask 标记为“可见”。我很高兴该过程在绘制小部件后立即被终止。只是希望它能够存活足够长的时间来完成。
android - Android线程问题
我有以下代码,我希望能够每 30 秒循环一次。
一旦我有了位置就会被触发,并且 OverlayTask 执行得很好,它也会在分配给菜单项以强制执行时执行。
但是在计时器内我得到一个错误。
错误是......
执行 MyAsyncTask 时出错:(2573):只有创建视图层次结构的原始线程才能接触其视图。
android - 对如何使用 Android 处理消息的注册和轮询感到困惑
我需要做的是自动注册设备(如果尚未完成),然后使用我通过此注册收到的凭据开始轮询消息。
现在,在我阅读了很多关于服务、线程、异步任务和 AlarmManager 的内容之后,我完全不知道如何处理这个问题。
所以,我有两个主要任务。您会推荐什么作为不太愚蠢的方法
注册 如果数据库中没有保存凭据,我目前正在从我的 UI 线程生成服务。在此服务中,我启动了一个异步任务,它将我的请求发布到服务器并接收新设备的凭据。stopSelf 结束服务。
你们会这样玩吗?
轮询。我不知道该怎么做。我想在应用程序处于顶部时经常轮询消息,让我们说每分钟。否则,当应用程序未运行时,我考虑使用 AlarmManager 的 setInexactRepeating() 方法,并且每 15 分钟轮询一次。
有没有更好或更温和的资源方式来做到这一点?
java - 完成 AsyncTask 后未调用 onPostExecute
出于某种原因onPostExecute()
,我完成后没有调用 my AsyncTask
。
我的班级声明:
public class setWallpaperForeground extends AsyncTask<String, Integer, Boolean>
我的 onPostExecute():
protected void onPostExecute(Boolean result)
一切正常,我doInBackground()
成功完成并返回一个布尔值,但它就完成了。
谢谢
java - 定期从 Android 中的服务器获取数据(轮询)
我在使用 rest 调用从服务器获取数据并将其添加到视图的应用程序上工作。我正确获得了所有初始数据。我使用 AsyncTask 来做这件事。
现在我想定期(比如 2 分钟)从服务器获取新数据并将其添加到视图中。定期从 Android 中的服务器获取数据(轮询)。
android - 切换到横向很慢
这在 onCreate() 中被调用,如何加快方向切换?
java - 配置更改后 ProgressDialog 未更新(方向变为水平)
当屏幕方向改变时,ProgressDialog 退出更新。我已经实施了一个修复程序,该修复程序可以挽救 asynctask 并将 asynctask 的活动设置为在它被销毁和重建后的新活动。进度对话框上的完成百分比保持在方向更改之前的百分比。
我错过了什么?
android - Android - 更新后列表返回顶部
我有一个通过 Handler postDelayed() 方法每 2 秒刷新一次的列表。
每 2 秒运行一次 AsyncTask,它发出一个 HTTP GET 请求,将 JSON 转换为对象列表,然后设置 ListAdapter:
我的问题是每次任务完成时(因此,大约每两秒钟)我的列表会跳回顶部,即使我已经向下滚动到列表的中间或底部。这对最终用户来说会很烦人,所以我需要在后台更新列表,就像它正在做的那样,但是列表的当前视图在 AsyncTask 完成时不会跳回顶部。
我可以包含更多需要的代码。我对android开发有点陌生,所以我不确定什么对其他人有帮助。
附加信息
接受 hacksteak25 的建议,我能够尝试从适配器中删除所有数据,然后一次将其添加回一个对象。这不是最终解决方案,因为这可能仍会导致屏幕跳跃,但我试图将其用作我如何在某个时候合并数据的概念证明。
我的问题是我调用以下代码:
在第一次调用“add(myObject)”之后,将调用 MyListAdapter 的 getView() 方法。此时自定义适配器的私有内部 ArrayList 为空,要么是因为我在 onCreate() 中设置了没有 myObjects 的适配器,要么是因为我在适配器上调用了 clear(),我不确定。无论哪种方式,这都会导致 getView 失败,因为 ArrayList 中没有要从中获取视图的对象。
getView() 看起来像这样:
最后一行是导致 IndexOutOfBoundsException 的那一行。
我应该如何处理这种情况,在那里我得到我想要的数据而不导致列表跳转?
android - 尝试在 droid-fu Android 中使用 BetterAsyncTask 时强制关闭
我目前正在尝试使用 android 库 android fu 来帮助我使用我的第一个合适的应用程序。
我正在尝试使用 droid fu 库创建一个测试项目,但是当我去测试应用程序时,它会强制关闭。
我已经使用了 asynctask 的示例,当我测试它加载的应用程序并执行它的意思时,但是当我用 betterasynctask 替换它时,应用程序强制关闭。
您可以从http://androidapp.dino-digital.com/DroidFuTest.zip下载测试应用程序的源代码
java - 如何在 Android 上进行异步 URL 连接?
我正在使用以下类连接到我的 Web 服务。我想让这个异步。我怎样才能做到这一点?