在android中后台调用多个服务
我必须在后台为android应用程序中的一个项目调用多个服务。 在每个服务中,我必须调用单独的web服务,获取一些数据并使用本地sqlite数据库进行处理。我可以分别调用每个服务,并可以使用本地数据库操作其结果。 但不能按顺序调用所有服务。 我的代码如下:在android中后台调用多个服务,android,service,android-service,background-process,Android,Service,Android Service,Background Process,我必须在后台为android应用程序中的一个项目调用多个服务。 在每个服务中,我必须调用单独的web服务,获取一些数据并使用本地sqlite数据库进行处理。我可以分别调用每个服务,并可以使用本地数据库操作其结果。 但不能按顺序调用所有服务。 我的代码如下: @Override public void onStart(Intent intent, int startid) { Toast.makeText(this, "My Service Started", Toast.
@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服务的方法 我建议您选择AsyncTask解决方案。这是一种简单而直接的方法,可以运行请求或任何其他后台任务,并使用必须使用AsyncTask的最新OS 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
}
}
我建议您选择AsyncTask解决方案。这是一种简单而直接的方法,可以运行请求或任何其他后台任务,并使用必须使用AsyncTask的最新OS 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
}
}
使用意图服务按顺序执行任务。 查看下面的链接了解详细信息
使用意向服务按顺序执行任务。 查看下面的链接了解详细信息