48883


javaのコードで入力待ちのためにwhileを使用すると画面がフリーズしてしまいます。C#では`Application.DoEvents()`というものがあり対処できたのですがJavaでフリーズさせない方法はあるのでしょうか？検索しても情報が見つからないので助けてほしいです。

[code]

    int count = 0;
    
    while(true){
        if(count == 4){
            break;
        }
    }
    
[/code]

countの値が4になるまで永遠に待ちたいのですが、whileを使用すると画面がフリーズします。どうすればよいでしょうか。


CC BY-SA 4.0
2018-10-01T18:47:24.350
48881
2018-10-02T10:38:43.767
2018-10-02T01:23:26.270
3060
26076
question
android java
条件がそろうまでコードを進ませたくない


> 永遠に待ちたい

こういう待ち方をすると正常終了もできませんよ。待っちゃダメです。「待つ」という考え方を捨ててください。いまどき windows も android
も「ハンドラの中で待つ」という処理は禁止されています。

提示質問文書だけでは具体的に何がしたいのかわかりませんが、  
\- ＊＊＊条件が成立したのち△△△をしたい  
のなら  
\- ＊＊＊状況を変化させるハンドラの中で条件成立を判断する  
\- タイマーハンドラの中で条件成立を判断する  
のように考えます。

[for文のループが終わってから処理される](https://ja.stackoverflow.com/questions/48854/)  
[Listから取り出したボタンを
1秒まってからボタンの色を変えたい。](https://ja.stackoverflow.com/questions/48866/)  
どちらも「待つ」とダメという結論が出てますよね。


CC BY-SA 4.0
2018-10-02T00:08:36.493
48883
2018-10-02T00:08:36.493
8589
48881
answer


**解決(質問者自身による投稿)**

countを増やすボタンの中に条件判断とその先の処理を書く。

[code]

    startbutton.setOnClickListener(new ViweOnClickListener(){
    @Override
    public void onClick(){
    //処理
    }
    });
    
    //カウントを増やすボタン
    button1.setOnClickListener(new ViewOnClickListener(){
    @Override
    public void onClick(){
    count++
    if(count == 4){
    //条件が成立したら先にすすむ
    }
    }
    });
    
[/code]

startbuttonイベントの中ですべての処理を完結させようとしていたことで「待つ」という考えになってしまっていました。


CC BY-SA 4.0
2018-10-02T10:12:59.250
48902
2018-10-02T10:38:43.767
2018-10-02T10:38:43.767
26076
26076
48881
answer