android - Sqlite database update after async post not working -


i using httppost method send message android device via web server. when response comes back, device supposed update on-board database format i've used million times,

if(postmessage(themessage).trim().equals("ok")){    databasehelper helper = new databasehelper(sharedialog.this);   database = helper.getwritabledatabase();   strsharedwith = strsharedwith + thenameencoded+ "|~|";//my delimiter;     string strfilter = "listtitle= '" + listtitle + "'";   contentvalues values = new contentvalues();   values.put("sharedwith", strsharedwith);   int numrows = database.update("listdata", values, strfilter, null);   database.close(); toast.maketext(getbasecontext(), numrows + "", toast.length_short).show();//toasts "1" 

everything appears work: message sent other device, response comes web server, , toast message indicates 1 row has been updated...but value remains null. see i'm missing? thanks

edit: i've found query works fine if moved ahead of calling asynctask...seems strange me query isn't executed, know if block (because there's else block not executed). @ risk of embarrassing myself i'm posting code asynctask; know use of

while (something.equals("")){   try { thread.sleep(1000); } catch (interruptedexception e) { // todo auto-generated catch block e.printstacktrace();   } }  

is bad practice, way got post server work. see i'd better clean second thread usage, if (and show me update local database), i'll mark answered. oh, side note: advice use execsql generated exceptions because of improper escaping of pipe delimiter--the format i'm using avoids that. ok, red face:

if(postmessage(thenameencoded).trim().equals("ok")){    //was making database update here, didn't work   m_adapter.notifydatasetinvalidated();   loadadapter();   setlistadapter(m_adapter); }else{   //alert dialog }  public string postmessage(string towhom){  //get stuff database   strtopost = (assembled database call);   new myasynctask().execute(strtopost);   while (privatestatus.equals("")){     try {         thread.sleep(2000);     } catch (interruptedexception e) {       e.printstacktrace();         }     }   if (privatestatus.indexof("ok")>-1){     //the return webserver, ok on success     return "ok";   }else{     return "not friend";   } 

and, asynctask

private class myasynctask extends asynctask<string, integer, double>{   protected void onpreexecute() {    //progress dialog started   }  protected double doinbackground(string... params) {   httpclient httpclient = new defaulthttpclient();   httppost httppost = new httppost("http://www.my-domain.com/list_post.php"); try {        list<namevaluepair> namevaluepairs = new arraylist<namevaluepair>();         namevaluepairs.add(new basicnamevaluepair("listsent", strtopost));         namevaluepairs.add(new basicnamevaluepair("fromuser", myname));         namevaluepairs.add(new basicnamevaluepair("touser", sharinglistwith));          httppost.setentity(new urlencodedformentity(namevaluepairs));          status = httpclient.execute(httppost, new basicresponsehandler());         while (status.equals("")){           try {             thread.sleep(1000);           } catch (interruptedexception e) {             e.printstacktrace();           }         }         setstatus(status);          //exception catching         protected void onpostexecute(double result){         pdialog.dismiss();        }       }   public string setstatus (string thestatus){  if(!thestatus.equals(null)){    privatestatus = thestatus;     }       return null;   } 

i know. and, 2 of while{sleep} things. recommendations on how incorporate response webserver in secondary thread appreciated.

i update local database calling update function before calling asynctask; used connectivitymanager (as explained in link above) prevent update occurring if httppost wasn't going happen. consider inadequate, , still don't understand why couldn't use onpostexecute section of asynctask--which, being in ui thread , being handed result web server post, seemed place this. still stumped, if can shed light on i'd appreciate it. in meantime, i'll mark answered app works!


Comments

Popular posts from this blog

Ansible - ERROR! the field 'hosts' is required but was not set -

customize file_field button ruby on rails -

SoapUI on windows 10 - high DPI/4K scaling issue -