gpt4 book ai didi

android - AsyncTask 随机停止

转载 作者:行者123 更新时间:2023-11-30 03:52:23 27 4
gpt4 key购买 nike

我有一个基于拉取的应用程序,它必须每 15 秒从服务器拉取一次。为此,我使用了一个普通的 AsyncTask,我的代码基本上是这样的:

protected Void doInBackground(Context... arg0) {
while (true && this.pull_on ) {
pull_data();
TimeUnit.SECONDS.sleep(15)
};

现在我遇到了一个巨大的问题,即应用程序突然停止退出。 没有异常,AsyncTask 的状态为“正在运行”,“pull_on”变量设置为“true”,但它只是停止拉动。

我不能不重现这个,它有时会发生,我可以完美地工作很长时间然后就停止了。

有人知道这是怎么发生的吗?

我应该用计时器重构和实现它吗?

此外,与我所知道的相比,使用服务有什么好处?电池电量不是问题。

感谢您的帮助。

附言我应该补充一点,有时我从 AsyncTask 开始 Activity 。就像这个 'ApplicationManager.getCurrentActivity().startActivity( myIntent )' 但我不会成为问题。

附言

定时器接缝对我想使用的东西有限制,我确实想每 15 秒做一些事情,但在某些特殊情况下我想停止 ping 然后重新启动它。与使用 AsyncTask 相比,接缝的黑客攻击量要多得多。

最佳答案

这是一个糟糕的设计。您不希望每 15 秒在背景上无限循环一次。当应用程序被推送到后台时,这会耗尽电池电量,这是主要问题之一。

一种正确的方法是发出警报并对其使用react。计时器也是不错的选择。

我建议您考虑将其转移到服务中,这就是它的样子

A Service is an application component that can perform long-running operations in the background and does not provide a user interface

它讨论的是长时间运行的操作,但将经常性操作转移到服务中也很有意义。

关于服务的官方文档在这里:http://developer.android.com/guide/components/services.html

关于android - AsyncTask 随机停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13935948/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com