2013-04-24 3 views
0

У меня есть веб-сервис ksoap в действии таймера, который работает каждые полчаса, если я хорошо это сделаю. Один из них отправляет целые строки таблицы на sql-сервер, и мне кажется, что 0 или 1 зависит от правильной отправки. Если он возвращает 1, он должен удалить всю строку из sqlite. При этом он возвращает 1, он не входит в инструкции if и не выполняет команду delete. Я не знаю, как мой таймер и нить правильно подходят для этого и как я могу сделать это правильно?Где я могу поместить инструкцию IF для работы?

Кодекс:

try 
     { 
      final Timer V_Timer; 
      final Handler V_Handler; 
      V_Timer = new Timer(); 
      V_Handler = new Handler(Looper.getMainLooper()); 
      V_Timer.scheduleAtFixedRate(new TimerTask() 
      { 
       public void run() 
       {     
        V_Handler.post(new Runnable() 
       { 
       public void run() 
       { 
       //for status update// 
        if(isConnected()){     
        Thread networkThread = new Thread() { 
        @Override 
        public void run() { 

         try { 
          SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME_STATUS); 

          request.addProperty("MH_ID",hardwareID); 
          request.addProperty("Latitude",V_Latitude); 
          request.addProperty("Longitude",V_Longitude); 


         SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
         envelope.dotNet = true; 
         envelope.setOutputSoapObject(request); 

         HttpTransportSE ht = new HttpTransportSE(URL); 
         ht.call(SOAP_ACTION_STATUS, envelope); 
         final SoapPrimitive response = (SoapPrimitive)envelope.getResponse(); 
         final String str_ = response.toString(); 
         //final String str = response.toString()+"\n"+ V_Latitude +"\n"+V_Longitude; 

         runOnUiThread (new Runnable(){ 
        public void run() { 
         Toast.makeText(MainActivity.this, str_, Toast.LENGTH_LONG).show(); 
        } 
         }); 
         } 
         catch (Exception e) { 
          e.printStackTrace(); 
         } 
         } 
        }; 
        networkThread.start(); 

        //Insert Bulk// 

        if(isConnected()){     
          Thread networkThread2 = new Thread() { 
          @Override 
          public void run() { 
           str = "0"; 

           try { 
            StringBuilder bulk = GetTotalRecord(); 
            bulkinsert = bulk.toString(); 
            SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME_BULK); 

            request.addProperty("Insert_Bulk",bulkinsert);                  

           SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
           envelope.dotNet = true; 
           envelope.setOutputSoapObject(request); 

           HttpTransportSE ht = new HttpTransportSE(URL); 
           ht.call(SOAP_ACTION_BULK, envelope); 
           final SoapPrimitive response = (SoapPrimitive)envelope.getResponse(); 
           str = response.toString(); 


           runOnUiThread (new Runnable(){ 
          public void run() { 
           // Toast.makeText(MainActivity.this, str, Toast.LENGTH_LONG).show(); 
           /////delete sqlite table///// 

           Log.d("str", str); 

            if (str=="1") 
           { 
            try { 
              dbobject.delete(SQLiteDB.TABLE_NAME_S, null, null); 
              Toast.makeText(MainActivity.this, "All Answers sent", Toast.LENGTH_LONG).show() ; 
             } catch (Exception e) { 
              // TODO Auto-generated catch block 
              Toast.makeText(MainActivity.this, "Error: Answers could not send \n "+e.toString(), Toast.LENGTH_LONG).show(); 
              e.printStackTrace(); 
             } 
            finally{ 
             sqlitedb.close(); 
            } 
           } 

           /////delete sqlite table///// 

          } 
           }); 
           } 
           catch (Exception e) { 
            e.printStackTrace(); 
           } 
           } 
          }; 
          networkThread2.start(); 


        //Insert Bulk end//               

       } 
       } 
       }}); 
       } 
      },10000, 1000*60*30);   
        }  
     catch(Exception ex) 
     {  

     } 

ответ

0
if (str=="1") 

вы не можете сравнить String объект таким образом, в Java.

Вы должны использовать equalsTo() или конвертировать str в int

, например:

if (str.equalsTo("1")) { 
} 

или

int strInt = Integer.parseInt(str) 

if (strInt == 1) { 
} 
+0

Благодаря @blackbelt, он работал хорошо .. –

+0

вы можете – Blackbelt

Смежные вопросы