AsyncTask随机停止

时间:2012-12-18 15:14:12

标签: android android-asynctask

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

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

现在我遇到了一个大问题,该应用程序只是停止了拉出蓝色。 No exeptions,AsyncTask的状态是“正在运行”,“pull_on”变量设置为“true”,但它只是停止拉动。

我可以not reproduce这个,有时会发生,我可以长时间完美地工作然后它就会停止。

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

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

使用服务对我所知道的有什么好处?电池供电不是问题。

感谢您的帮助。

P.S。我应该补充说,有时我从AsyncTask开始Activitys。就像这个'ApplicationManager.getCurrentActivity()。startActivity(myIntent)'但我不是一个问题。

P.P.S。

计时器接缝限制为我想要使用的东西,我确实想每隔15秒做一些事情但在某些特殊情况下我想停止ping并再次重新启动它。然后,只需使用AsyncTask执行此操作,对接缝的攻击量就会更多。

1 个答案:

答案 0 :(得分:1)

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

这样做的一个正确方法是发出警报并对此作出反应。计时器也不错。

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

  

服务是一个应用程序组件,可以在后台执行长时间运行的操作,但不提供用户界面

它讨论了长时间运行的操作,但是经常性操作也可以转移到服务中。

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