2017-12-21 22 views
0

Ich habe eine Chat-Anwendung. Ich muss eine Nachricht nur einmal senden, während ich while (true) benutze. Aufgrund dieser Schleife wird die Nachricht immer wieder gesendet. Wie kann ich die While-Schleife unterbrechen, wenn die Nachricht nur einmal gesendet wird? Diese Nachricht sollte nicht immer wieder gesendet werden.Wie während der Schleife in Android Studio während des Sendens der Nachricht brechen

Hier ist mein Code:

while (true) { 
    String[] jobsNumbers = numbers.toArray(new String[numbers.size()]); 
    new SendMessage().execute(jobsNumbers); 
} 

und hier ist mein nachrichts AsyncTask:

private class sendMessage extends AsyncTask<String, Integer, Integer> { 

    @Override 
    protected Integer doInBackground(String[] toNumbers) { 
     totalNumbers = toNumbers.length; 
     for (i = 0; i < toNumbers.length; i++) { 
      toNumber = toNumbers[i]; 
      if (countMessagePerDay() >= Integer.parseInt(MaxNoOfMessagePerDay)) { 
       try { 
        Thread.sleep(10000); 
       } catch (InterruptedException e) { 
        e.printStackTrace(); 
       } 
      } else { 
       sendSMS(toNumber); 
       this.publishProgress(1); 
      } 

      if (randomNo != 0 && isSent) { 
       databaseHelperClass.updateJobMessageStatus(JobId); 
       } 
     } 
    return toNumbers.length; 
} 
    @Override 
    protected void onProgressUpdate(Integer... values) { 
     Toast.makeText(getApplicationContext(), i + "/" + totalNumbers + " :: to " + toNumber, Toast.LENGTH_SHORT).show(); 
     super.onProgressUpdate(values); 
    } 

    @Override 
    protected void onCancelled(Integer integer) { 
     super.onCancelled(integer); 
    } 

    @Override 
    protected void onPostExecute(Integer integer) { 
     Toast.makeText(getApplicationContext(), "Message sent!", Toast.LENGTH_LONG).show(); 
     super.onPostExecute(integer); 
    } 
} 
+1

warum Verwenden Sie die while-Schleife überhaupt? –

Antwort

0

Sie break; dafür verwenden können, wie:

while (true) { 
String[] jobsNumbers = numbers.toArray(new String[numbers.size()]); 
new SendMessage().execute(jobsNumbers); 
Boolean destroy= true; 
if(destroy == true){ 
break; 
} 

} 
+0

Ich benutze SQLite Datenbank. Ich bekomme eine Arraylist aus der Datenbank, welche Nachrichten gesendet werden. Ich speichere auch die boolesche Variable isSent in der Datenbank. Nun möchte ich, dass Nachrichten nicht mehr gesendet werden sollen, deren Id bereits isSent = true hatte. Wie kann ich das tun? –

+0

sollten Sie eine weitere Frage für das @ Ansarabbas, mehr Leute werden darüber wissen, –

+0

übrigens, wenn Sie die Arraylist aus der Datenbank, sollten Sie eine Abfrage, um die Daten mit isSent = nur –

0
int i = 0; 
while (i<1) 
{ 
    String[] jobsNumbers = numbers.toArray(new String[numbers.size()]); 
    new SendMessage().execute(jobsNumbers); 
    i++; 
} 
+0

Code während nur Antworten erhalten können Lösen Sie das ursprüngliche Problem, eine Erklärung Ihrer Lösung würde den allgemeinen Nutzen Ihrer Antwort verbessern. –

Verwandte Themen