AsyncTask用于长间隔任务

时间:2014-08-06 07:53:32

标签: java android multithreading web-services android-asynctask

我有我的App下载&从服务器上/上传数据(我的WebApp用Java编写,因此,使用SOAP webservice进行Android App和Java Web App之间的通信)。

到目前为止,我一直在使用

AsyncTask

用于调用WebServices下载/上传数据。

到目前为止,下载的数据量很少。 但是,当我从服务器下载大量数据时,应用程序崩溃了。

参考android ref doc。

AsyncTasks should ideally be used for short operations (a few seconds at the most.) If you need to keep threads running for long periods of time, it is highly recommended you use the various APIs provided by the java.util.concurrent pacakge such as Executor, ThreadPoolExecutor and FutureTask.

所以我认为这是AsyncTask用于较长时间间隔的问题。

这是similar old post

但我无法弄清楚如何使用其他线程技术调用Web服务,例如:Thread Pool ExecutorFuture TaskExecutor

以下是我的LogCat:enter image description here

嘿,现在还有一个问题。我已经将IntentService用于那些长时间运行的网络操作(下载)。现在,因为我的数据足够大,所以下载.Hence,在下载过程中如果互联网连接丢失,那么我必须停止我认为我可以使用的IntentService。

stopService(new Intent(MainActivity.this, IntentServiceClass .class));

调用,

onDestroy()

的服务。但是编写的代码,

onHandleIntent(Intent intent)

将继续执行。 (这不应该发生)。

1 个答案:

答案 0 :(得分:0)

此类任何长任务都应使用Android服务。基本问题是Android中的应用程序生命周期。操作系统可以停止任何活动和关联的线程。相比之下,服务会运行后台,直到它暂停或完成或等等。

还存在良好可靠的通信状态等方式,以便在服务和活动之间进行通信。

有关如何获取服务和活动的详细信息question有很多非常有用的信息