2017-12-21 36 views
0

私はチャットアプリケーションを持っています。私はメッセージを一度だけ送る必要がありますが、私はwhile(真)を使っています。このため、ループメッセージは繰り返し送信されます。メッセージを1回だけ送信したときにwhileループを解除するにはどうすればよいですか?そのメッセージは何度も何度も送信すべきではありません。ここでメッセージを送信中にAndroid Studioでループを中断する方法

は私のコードです:

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

、ここでは私のsendMessage 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

あなたはwhileループをまったく使用していますか? –

答えて

0

あなたが好き、このためbreak;を使用することができますしている理由

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

元の問題を解決して、あなたの解答の説明があなたの答えの一般的な有用性を向上させるでしょう。 –

関連する問題