0

我正在开发一个包含 5-6 个用户参与活动的应用程序。在此期间将生成一些数据并保存到数据库中。

我需要在服务器之间上传/同步这些数据(我使用 KSOAP2)。但这应该发生在后面。即使用户在活动之间跳转,也不应该受到影响。但是当我退出应用程序时,我不希望这个过程继续下去。

Android服务是做到这一点的唯一方法吗?什么是最好的选择?

4

3 回答 3

1

您可以使用异步任务

http://developer.android.com/reference/android/os/AsyncTask.html查看标题The 4 steps下的文档。

AsyncTask 被设计为围绕 Thread 和 Handler 的辅助类,并不构成通用线程框架。AsyncTasks 最好用于短时间的操作(最多几秒钟)。如果您需要保持线程长时间运行,强烈建议您使用 java.util.concurrent 包提供的各种 API,例如Executor、ThreadPoolExecutor 和 FutureTask。

在 setContentView() 之后的活动中

    pd= new ProgressDialog(this);
    pd.setTitle("Making Soap Request");
     new SoapRequestTask().execute();

 private class SoapRequestTask extends AsyncTask<VOid, Void, Void> {

  protected void onPreExecute()
  {
      pd.show();
  }
   protected SoapObject doInBackground(Void... params) {
    // TODO Auto-generated method stub
           //Soap request. do not update ui here
    return null;
    }

 protected void onPostExecute(Void param)
 {   
      //update ui here
  pd.dismiss();

 }

asynctask 的替代方案是Robospicehttps://github.com/octo-online/robospice

您可以在此处开始使用 robopice。https://github.com/octo-online/robospice/wiki/Starter-Guide

https://play.google.com/store/apps/details?id=com.octo.android.robospice.motivations&feature=search_result上的 robospice 示例。

robospice 的一些特性。

1. 异步执行(在后台 AndroidService 中)网络请求(例如:使用 Spring Android 的 REST 请求)。

2.强类型!您使用 POJO 提出请求,并获得 POJO 作为请求结果。

3. 对用于请求的 POJO 和您在项目中使用的 Activity 类均不实施任何限制。

4.caches 结果(在 Json 中同时包含 Jackson 和 Gson,或 Xml,或纯文本文件,或二进制文件,甚至使用 ORM Lite)。

5.当且仅当它们仍然存在时,通知您的活动(或任何其他上下文)网络请求的结果

6. 完全没有内存泄漏,就像 Android Loaders 一样,不像 Android AsyncTasks 在他们的 UI 线程上通知你的活动。

7.使用简单但健壮的异常处理模型。

于 2013-03-21T15:36:32.993 回答
0

我认为异步任务是您正在寻找的... http://developer.android.com/reference/android/os/AsyncTask.html

于 2013-03-21T14:45:39.853 回答
0

不,您可以使用AsyncTask. 文档:http: //developer.android.com/reference/android/os/AsyncTask.html

于 2013-03-21T14:45:42.867 回答