我正在开发一个有5到6个用户参与的活动的应用程序。在此期间将生成一些数据并将其保存到数据库中。
我需要在服务器之间上传/同步这些数据(我使用KSOAP2)。但这应该发生在后面。即使用户在活动之间跳跃,也不应该受到影响。但是当我退出应用程序时,我不希望这个过程继续。
Android服务是唯一的方法吗?什么是最好的选择?
答案 0 :(得分:1)
您可以使用异步任务
http://developer.android.com/reference/android/os/AsyncTask.html。请查看 4个步骤标题下的文档。
AsyncTask旨在成为Thread和Handler的辅助类,并不构成通用的线程框架。理想情况下,AsyncTasks应该用于短操作(最多几秒钟。)如果需要保持线程长时间运行,强烈建议您使用java.util.concurrent pacakge提供的各种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的替代方法是 Robospice 。https://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.使用简单但强大的异常处理模型。
答案 1 :(得分:0)
我认为异步任务就是你要找的...... http://developer.android.com/reference/android/os/AsyncTask.html
答案 2 :(得分:0)
不,您可以使用AsyncTask
。文档:http://developer.android.com/reference/android/os/AsyncTask.html