如果不希望通过来电,AsyncTask或服务停止操作,我应该使用什么?

时间:2014-08-27 12:32:48

标签: android android-activity android-asynctask android-service

我对Android完全陌生,我正在开发我的第一款应用。 在这个应用程序中,我每天只使用互联网两次。 第一次,在当天开始时,用户下载所有必要的数据在白天工作,第二次在一天结束时将当天操作的所有结果发送到服务器(同步数据)

我知道我应该使用不同的线程进行已知需要花费一些时间的操作,例如从Internet下载数据。但是当用户下载数据或将数据发送到服务器时,AsyncTask发生了什么,他/他/她接到一个电话?

对于我的应用中的其他操作,如果我需要重新开始并不重要,但对于使用互联网的这两项操作,我不认为这是一个好主意。< / p>

因此,无论活动发生什么,知道服务将继续运行,问题是,我应该对这两个使用互联网的操作使用什么? AsyncTask或带线程的服务??

提前致谢。

2 个答案:

答案 0 :(得分:3)

您可以使用IntentService,它是一种已经实现后台线程的服务,用于执行持久的任务。 IntentServices的一个积极方面是默认情况下,它们会在任务执行结束时自动停止并释放所使用的资源。您所要做的就是覆盖onHandleIntent()方法,该方法在后台线程上执行以下载必要的任务:

@Override
protected void onHandleIntent(Intent intent) {

    // download tasks here
}

有关详细信息,您可以查看Android开发者网站here

**

编辑:

**

使用LocalBroadcastManager可以轻松实现从服务更新UI组件,answer使用一个进程的组件发送广播Intent。有关详细信息,请参阅此{{3}}。

答案 1 :(得分:1)

我将在前台模式下使用Service,因为当内存不足时,它不会被系统杀死。您可以按this link了解详情。