Reputation: 485
I want to send more than one record of SQLite
data to server when my internet connection is come back, i have programmed a broadcast receiver
which works when my internet is come back, but it send only one data to server, i want to send all the records of table when internet come back, suggest me that how to pass arguments to async task
in for loop, an take each data to params.
public class BroadcastCreateTask extends BroadcastReceiver {
DatabaseHandler db;
public ProgressDialog pDialog;
JSONParser jsonParser=new JSONParser();
private static String url_insert_task= "";
// JSON Node names
private static final String TAG_SUCCESS = "success";
@Override
public void onReceive(Context context, Intent intent) {
db= new DatabaseHandler(context);
boolean status = NetworkUtil.isNetworkAvailable(context);
String s = String.valueOf(status);
if(s.equals("true"))
Toast.makeText(context, "Connected to internet", Toast.LENGTH_LONG).show();
new createTask().execute();
Toast.makeText(context, "data send to server", Toast.LENGTH_SHORT).show();
if(s.equals("false"))
Toast.makeText(context, "Not Connected to internet", Toast.LENGTH_SHORT).show();
}
class createTask extends AsyncTask<String, Void,String>
{
@Override
protected String doInBackground(String... arg0) {
List<Task> tasks = db.getAllContacts();
for(Task t : tasks){
String o = t.getOwner();
String s = t.getSubject();
String st = t.getStartDate();
String dt = t.getDueDate();
String c = t.getContacts();
String sta = t.getStatus();
String p = t.getPriority();
String d = t.getDescription();
ArrayList<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("owner",o));
params.add(new BasicNameValuePair("subject",s));
params.add(new BasicNameValuePair("startdate",st));
params.add(new BasicNameValuePair("duedate",dt));
params.add(new BasicNameValuePair("contacts",c));
params.add(new BasicNameValuePair("status",sta));
params.add(new BasicNameValuePair("priority",p));
params.add(new BasicNameValuePair("description",d));
JSONObject json = jsonParser.makeHttpRequest(url_insert_task, "POST", params);
db.deleteContact(new Task(o,s));
// check log cat for response
Log.d("Create Response", json.toString());
try
{
int success = json.getInt(TAG_SUCCESS);
if(success==1)
{
pDialog.dismiss();
}
} catch (JSONException e)
{
// TODO: handle exception
e.printStackTrace();
}
return null;
}
return null;
} // end of background method
@Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
}
} // end of async task
}`
Upvotes: 0
Views: 603
Reputation: 38605
You have the statement return null
before the closing brace of the for
loop. Your loop runs only once and returns, which explains why only one record is being sent.
Upvotes: 1