2017-12-21 39 views
0

나는 채팅 응용 프로그램을 가지고 있습니다. 나는 while (true)를 사용하는 반면 한 번만 메시지를 보내야합니다. 이 루프 메시지가 반복해서 전송되기 때문입니다. 메시지가 한 번만 전송되면 while 루프를 중단시킬 수 있습니까? 그 메시지는 반복해서 보내서는 안됩니다. 내 sendMessage 첨부 AsyncTask를메시지를 보내는 동안 안드로이드 스튜디오에서 while 루프를 깨는 방법

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

하고 여기에 있습니다 : : 여기

내 코드입니다

당신처럼,이에 대한 break;을 사용할 수 있습니다
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

가 왜 while 루프를 사용하고 있습니까? –

답변

0

:

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

} 
+0

sqlite 데이터베이스를 사용하고 있습니다. 메시지가 전송되는 데이터베이스에서 arraylist를 얻고 있습니다. 나는 또한 boolean 변수 isSent를 데이터베이스에 저장하려고한다. 이제 Id가 이미 isSent = true 인 메시지를 다시 보내지 않기를 바란다. 내가 어떻게 할 수 있니? –

+0

당신은 그 @ ansarabbas에 대한 또 다른 질문을 게시해야합니다. 더 많은 사람들이 데이터베이스에서 arraylist를 얻는 방법으로 –

+0

을 알게 될 것입니다. isSent = false로 데이터를 가져 오기 위해 쿼리를 작성해야합니다. –

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

코드 만 응답해도됩니다. 원래의 문제를 풀 때, 당신의 해답에 대한 설명은 당신의 대답의 일반적인 유용성을 향상시킬 것입니다. –