Question

i have Database-handler class and in that i have function to get data from sq-lite database. This code run perfectly in activity but not run in service.This code doesn't gives any error.

package services;

import java.util.ArrayList;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONException;
import org.json.JSONObject;

import com.example.varad.URL_OF_SERVER;
import com.example.varad.VaradSuccess;

import com.example.varad.lib.DatabaseHandler;
import com.example.varad.lib.JSONParser;


import android.app.ProgressDialog;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.os.AsyncTask;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
import android.util.Log;
import android.widget.Toast;
import com.example.varad.VaradSuccess;

public class Sync extends Service {


    //strings
    String id="";
    String name="";
    String contact="";

    String occup="";
    String org="";
    String proptype="";

    String propfur="";
    String uptofloor="";
    String loc="";

    String pricefrom="";
    String priceto="";
    String property="";

     String[][] aryDB = new String[5][12];


        JSONObject json;

    static URL_OF_SERVER os = new URL_OF_SERVER();

    static String return_url = os.RETURN_URL();

    private static String url_insert = return_url + "/sell.php";

    // JSON Node names
    private static final String TAG_SUCCESS = "success";

    // Progress Dialog
    private ProgressDialog pDialog;
     int i=0,last_i=0,j=0;

    JSONParser jsonParser = new JSONParser();
    private static final String TAG = "Sync";

    private static Timer timer = new Timer();
    private Context ctx;



    @Override
    public IBinder onBind(Intent arg0) {
        // TODO Auto-generated method stub

        return null;

    }

    public void onCreate() {

        Toast.makeText(this, "My Service Created", Toast.LENGTH_LONG).show();

        Log.i("Where in service","In oncreate startup");
        DatabaseHandler db=new DatabaseHandler(getApplicationContext());
        Log.i("Where in service","after db object createdp");


        j=0;
        Log.i("Where in service","after j=0");
        Cursor c=db.getData();
        Log.i("Where in service","after Cursor c=db.getData();");

            //Note:-This code run upto here. code not goes in if statement

        if(c.moveToFirst()){
            Log.i("Where in service","after if(c.moveToNext()){");
            do{
                Log.i("Where in service","after do{");
                id=c.getString(c.getColumnIndex("id"));
                name=c.getString(c.getColumnIndex("name"));
                contact=c.getString(c.getColumnIndex("contact"));
                occup=c.getString(c.getColumnIndex("occupation"));
                org=c.getString(c.getColumnIndex("organization"));
                proptype=c.getString(c.getColumnIndex("proptype"));
                propfur=c.getString(c.getColumnIndex("propfur"));
                uptofloor=c.getString(c.getColumnIndex("uptofloor"));
                loc=c.getString(c.getColumnIndex("location"));
                pricefrom=c.getString(c.getColumnIndex("pricefrom"));
                priceto=c.getString(c.getColumnIndex("priceto"));
                property=c.getString(c.getColumnIndex("property"));

                aryDB[i][0]=id;
                aryDB[i][1]=name;
                aryDB[i][2]=contact;
                aryDB[i][3]=occup;
                aryDB[i][4]=org;
                aryDB[i][5]=proptype;
                aryDB[i][6]=propfur;
                aryDB[i][7]=uptofloor;
                aryDB[i][8]=loc;
                aryDB[i][9]=pricefrom;
                aryDB[i][10]=priceto;
                aryDB[i][11]=property;




                    Toast.makeText(getApplicationContext(), aryDB[i][0]+" "+aryDB[i][1]+" "+aryDB[i][2]+" "+aryDB[i][3],Toast.LENGTH_SHORT).show();
                    Log.i("Data=", ""+i);

                i++;

            }while(c.moveToNext());


            last_i=i;
            new addCommsell().execute();
            i=0;
            db.close();

        }



    }



    @Override
    public void onDestroy() {

         super.onDestroy();
         Toast.makeText(this, "Service Stopped ...", Toast.LENGTH_SHORT).show();
    }






    class addCommsell extends AsyncTask<String, String, String> {




        int success=0;
        /**
         * Before starting background thread Show Progress Dialog
         * */
        @Override
        protected void onPreExecute() {
            super.onPreExecute();



            pDialog = new ProgressDialog(Sync.this);
            pDialog.setMessage("Inserting Details..");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(false);
            pDialog.show();
        }

        /**
         * Creating product
         * */
        protected String doInBackground(String... args) {


            List<NameValuePair> params = new ArrayList<NameValuePair>();



            // Building Parameters

            params.add(new BasicNameValuePair("name", aryDB[j][1]));
            params.add(new BasicNameValuePair("contact", aryDB[j][2]));
            params.add(new BasicNameValuePair("occupation", aryDB[j][3]));
            params.add(new BasicNameValuePair("organization", aryDB[j][4]));
            params.add(new BasicNameValuePair("proptype", aryDB[j][5]));
            params.add(new BasicNameValuePair("propfur", aryDB[j][6]));
            params.add(new BasicNameValuePair("uptofloor", aryDB[j][7]));
            params.add(new BasicNameValuePair("location", aryDB[j][8]));
            params.add(new BasicNameValuePair("pricefrom", aryDB[j][9]));
            params.add(new BasicNameValuePair("priceto", aryDB[j][10]));
            params.add(new BasicNameValuePair("property", aryDB[j][11]));







            json = jsonParser.makeHttpRequest(url_insert, "POST",
                    params);



            // getting JSON Object
            // Note that create product url accepts POST method

            // check log cat fro response
            Log.d("Create Response", json.toString());

            // check for success tag
            try {
                 success = json.getInt(TAG_SUCCESS);

                if (success == 1) {
                    // successfully created product

                } 
                else {
                    // failed to create product
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }

            return null;
        }

        /**
         * After completing background task Dismiss the progress dialog
         * **/
        protected void onPostExecute(String file_url) {
            // dismiss the dialog once done
            pDialog.dismiss();

            j++;
            if(j!=last_i){
            new addCommsell().execute();
            }


            Toast.makeText(Sync.this, " s="+success+" j= "+ j +" last_i = "+last_i, Toast.LENGTH_SHORT).show();
            Log.i("posation of post "," s="+success+" j= "+ j +" last_i = "+last_i );
            return ;

        }
    }




}

I am using this code to sync sq-lite with MySQL using JSON web-services

Was it helpful?

Solution

Your code contain the Progress for in android service. Its working fine in Activity because, In activity allows you to create the progress dialog but in service you can't do that. so just use the following code.

package services;

import java.util.ArrayList;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONException;
import org.json.JSONObject;

import com.example.varad.URL_OF_SERVER;
import com.example.varad.VaradSuccess;

import com.example.varad.lib.DatabaseHandler;
import com.example.varad.lib.JSONParser;


import android.app.ProgressDialog;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.os.AsyncTask;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
import android.util.Log;
import android.widget.Toast;
import com.example.varad.VaradSuccess;

public class Sync extends Service {


    //strings
    String id="";
    String name="";
    String contact="";

    String occup="";
    String org="";
    String proptype="";

    String propfur="";
    String uptofloor="";
    String loc="";

    String pricefrom="";
    String priceto="";
    String property="";

     String[][] aryDB = new String[5][12];


        JSONObject json;

    static URL_OF_SERVER os = new URL_OF_SERVER();

    static String return_url = os.RETURN_URL();

    private static String url_insert = return_url + "/sell.php";

    // JSON Node names
    private static final String TAG_SUCCESS = "success";

    // Progress Dialog
    //private ProgressDialog pDialog;
     int i=0,last_i=0,j=0;

    JSONParser jsonParser = new JSONParser();
    private static final String TAG = "Sync";

    private static Timer timer = new Timer();
    private Context ctx;



    @Override
    public IBinder onBind(Intent arg0) {
        // TODO Auto-generated method stub

        return null;

    }

    public void onCreate() {

        Toast.makeText(this, "My Service Created", Toast.LENGTH_LONG).show();

        Log.i("Where in service","In oncreate startup");
        DatabaseHandler db=new DatabaseHandler(getApplicationContext());
        Log.i("Where in service","after db object createdp");


        j=0;
        Log.i("Where in service","after j=0");
        Cursor c=db.getData();
        Log.i("Where in service","after Cursor c=db.getData();");

            //Note:-This code run upto here. code not goes in if statement

        if(c.moveToFirst()){
            Log.i("Where in service","after if(c.moveToNext()){");
            do{
                Log.i("Where in service","after do{");
                id=c.getString(c.getColumnIndex("id"));
                name=c.getString(c.getColumnIndex("name"));
                contact=c.getString(c.getColumnIndex("contact"));
                occup=c.getString(c.getColumnIndex("occupation"));
                org=c.getString(c.getColumnIndex("organization"));
                proptype=c.getString(c.getColumnIndex("proptype"));
                propfur=c.getString(c.getColumnIndex("propfur"));
                uptofloor=c.getString(c.getColumnIndex("uptofloor"));
                loc=c.getString(c.getColumnIndex("location"));
                pricefrom=c.getString(c.getColumnIndex("pricefrom"));
                priceto=c.getString(c.getColumnIndex("priceto"));
                property=c.getString(c.getColumnIndex("property"));

                aryDB[i][0]=id;
                aryDB[i][1]=name;
                aryDB[i][2]=contact;
                aryDB[i][3]=occup;
                aryDB[i][4]=org;
                aryDB[i][5]=proptype;
                aryDB[i][6]=propfur;
                aryDB[i][7]=uptofloor;
                aryDB[i][8]=loc;
                aryDB[i][9]=pricefrom;
                aryDB[i][10]=priceto;
                aryDB[i][11]=property;




                    Toast.makeText(getApplicationContext(), aryDB[i][0]+" "+aryDB[i][1]+" "+aryDB[i][2]+" "+aryDB[i][3],Toast.LENGTH_SHORT).show();
                    Log.i("Data=", ""+i);

                i++;

            }while(c.moveToNext());


            last_i=i;
            new addCommsell().execute();
            i=0;
            db.close();

        }



    }



    @Override
    public void onDestroy() {

         super.onDestroy();
         Toast.makeText(this, "Service Stopped ...", Toast.LENGTH_SHORT).show();
    }






    class addCommsell extends AsyncTask<String, String, String> {




        int success=0;
        /**
         * Before starting background thread Show Progress Dialog
         * */
        @Override
        protected void onPreExecute() {
            super.onPreExecute();


          /*
            pDialog = new ProgressDialog(Sync.this);
            pDialog.setMessage("Inserting Details..");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(false);
            pDialog.show();
          */
        }

        /**
         * Creating product
         * */
        protected String doInBackground(String... args) {


            List<NameValuePair> params = new ArrayList<NameValuePair>();



            // Building Parameters

            params.add(new BasicNameValuePair("name", aryDB[j][1]));
            params.add(new BasicNameValuePair("contact", aryDB[j][2]));
            params.add(new BasicNameValuePair("occupation", aryDB[j][3]));
            params.add(new BasicNameValuePair("organization", aryDB[j][4]));
            params.add(new BasicNameValuePair("proptype", aryDB[j][5]));
            params.add(new BasicNameValuePair("propfur", aryDB[j][6]));
            params.add(new BasicNameValuePair("uptofloor", aryDB[j][7]));
            params.add(new BasicNameValuePair("location", aryDB[j][8]));
            params.add(new BasicNameValuePair("pricefrom", aryDB[j][9]));
            params.add(new BasicNameValuePair("priceto", aryDB[j][10]));
            params.add(new BasicNameValuePair("property", aryDB[j][11]));







            json = jsonParser.makeHttpRequest(url_insert, "POST",
                    params);



            // getting JSON Object
            // Note that create product url accepts POST method

            // check log cat fro response
            Log.d("Create Response", json.toString());

            // check for success tag
            try {
                 success = json.getInt(TAG_SUCCESS);

                if (success == 1) {
                    // successfully created product

                } 
                else {
                    // failed to create product
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }

            return null;
        }

        /**
         * After completing background task Dismiss the progress dialog
         * **/
        protected void onPostExecute(String file_url) {
            // dismiss the dialog once done
            //pDialog.dismiss();

            j++;
            if(j!=last_i){
            new addCommsell().execute();
            }


            Toast.makeText(Sync.this, " s="+success+" j= "+ j +" last_i = "+last_i, Toast.LENGTH_SHORT).show();
            Log.i("posation of post "," s="+success+" j= "+ j +" last_i = "+last_i );
            return ;

        }
    }




}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top