你可以使用异步任务
http://developer.android.com/reference/android/os/AsyncTask.html。查看标题4 个步骤下的文档。
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 的替代方案是 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 加载器,不像 Android AsyncTasks 在他们的 UI 线程上通知你的活动。
7.使用简单但健壮的异常处理模型。