android - 在android环境中调用多个服务

  显示原文与译文双语对照的内容
84 2

我必须为 Android 应用 中的项目调用背景中的多个服务。在每个服务中,我必须调用单独的web服务并获取一些数据并使用本地sqlite数据库进行处理。我可以分别调用每个服务,并可以使用本地数据库操作它的结果。但不能在一个序列中调用所有服务。我的代码是 below:

@Override
 public void onStart(Intent intent, int startid) {
 Toast.makeText(this,"My Service Started", Toast.LENGTH_LONG).show();
 Timer timer = new Timer();
 final SyncTableUsers syncUserObj = new SyncTableUsers(LocalService.this);
 final SyncTableVehicles syncVehicleObj = new SyncTableVehicles(this);
 final SyncTableLicenses syncLicenseObj = new SyncTableLicenses(this);
 final SyncTableTags syncTagObj = new SyncTableTags(this);
 final SyncTableTagMappings syncTagMapObj = new SyncTableTagMappings(this);
 final SyncTableAddresses syncAddressObj = new SyncTableAddresses(this);
 final SyncTableDispatches syncDispatchObj = new SyncTableDispatches(this);
 final SyncEditCompany syncCompanyObj = new SyncEditCompany(LocalService.this);
 final SyncEditVehicle syncEditVehicleObj = new SyncEditVehicle(LocalService.this);
 final SyncEditUser syncEditUserObj = new SyncEditUser(this);
 final SyncVehicleLog vLogObj = new SyncVehicleLog(LocalService.this);
 TimerTask timerTask = new TimerTask() {
 @Override
 public void run() {
 syncUserObj.syncUserData();
 syncVehicleObj.syncVehicleData();
 syncLicenseObj.syncLicensesData();
 syncTagObj.syncTagData();
 syncTagMapObj.syncTagMappingData();
 syncAddressObj.syncAddressData();
 syncDispatchObj.syncDispatchData();
 syncCompanyObj.syncCompanyData();
 syncEditVehicleObj.syncVehicleData();
 syncEditUserObj.syncUserData();
 Log.i("TAG","LogId After insert values");
 }
 }
 };
 timer.scheduleAtFixedRate(timerTask, 10000, 180000); call after every
 3 minute
 super.onStart(intent, startid);

syncUserData是一种调用web服务的方法。

时间:原作者:0个回答

136 1

我推荐你去 AsyncTask 。使用具有最新操作系统virsion的设备,运行请求或者任何其他后台任务并调用 Web服务,这是一种简单而直接的方式。

如果需要在运行请求时显示某个进度条,也很容易实现 比如 onProgressUpdate 。

private class YourTask extends AsyncTask<URL, Integer, Long> {
 protected Long doInBackground(URL... urls) {
//call your methods from here
//publish yor progress here..
 publishProgress((int) ((i/(float) count) * 100));
 }
 protected void onProgressUpdate(Integer... progress) {
 setProgressPercent(progress[0]);
 }
 protected void onPostExecute(Long result) {
//action after execution success or not
 }
}
原作者:
145 5

使用 Intent Service 按顺序执行任务。查看 below 链接以获得详细信息
https://developer.android.com/reference/android/app/IntentService.html

原作者:
...