나는이 스레드 시작 ... 3 2 ... 1을 표시하는 다음 코드를어떻게 일시 정지/다시 시작 또는 스레드를 중지하고 팝업을 표시
...
final Handler handler = new Handler();
final TextView textView = (TextView) findViewById(R.id.textView2);
final java.util.concurrent.atomic.AtomicInteger n = new AtomicInteger(3);
final Runnable counter = new Runnable() {
@Override
public void run() {
textView.setText(Integer.toString(n.get()));
if(n.getAndDecrement() >= 1)
handler.postDelayed(this, 1000);
else {
textView.setVisibility(View.GONE);
tv.post(new Roller(900)); //tv is a textView
}
}
};
handler.postDelayed(counter, 1000);
...
ImageButton ibStop;
ibStop.setOnClickListener(...() {
//stop the thread
//display a popup
});
ImageButton ibPause;
ibPause.setOnClickListener(...() {
//pause the thread
//display a popup
});
ImageButton ibPlay;
ibPlay.setOnClickListener(...() {
//display the `handler` above with the 3...2...1...
//resume the thread
});
의 Runnable :
private class Roller implements Runnable
{
private long delayMillis;
private Boolean stop = false;
public Roller(long delayMillis)
{
this.delayMillis = delayMillis;
}
@Override
public void run()
{
int min = 0;
int max = 1;
int n = rand.nextInt(max - min + 1) + min;
String roll = String.valueOf(n);
tv.setText("Random number is " + roll); //tv is a textview
if (roll.equals("0")) {
inType = 0;
ibRed.setImageResource(R.drawable.red_selector);
ibGreen.setImageResource(R.drawable.green_dark);
}
if (roll.equals("1")) {
inType = 1;
ibRed.setImageResource(R.drawable.red_dark);
ibGreen.setImageResource(R.drawable.green_selector);
}
tv.postDelayed(this, delayMillis);
}
}
을
스레드를 중지하고 일시 중지/다시 시작하도록 도와주세요.
일시 중지하거나 계속 실행하려면 플래그 변수를 넣고 변경해야합니다. – Alon