在android中后台调用多个服务

在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.

我必须在后台为android应用程序中的一个项目调用多个服务。 在每个服务中,我必须调用单独的web服务,获取一些数据并使用本地sqlite数据库进行处理。我可以分别调用每个服务,并可以使用本地数据库操作其结果。 但不能按顺序调用所有服务。 我的代码如下:

@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
 }
}

使用意图服务按顺序执行任务。 查看下面的链接了解详细信息
使用意向服务按顺序执行任务。 查看下面的链接了解详细信息