0

This code is use for pause thread but removeCallbacks here permanent kill thread process. I want to use some this in place of customHandler.removeCallbacks(updateTimerThread) to pause thread. May be we can use 'wait()andnotify()`.
So how to puase this thread?

button2.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            customHandler.removeCallbacks(updateTimerThread);
            button.setVisibility(View.VISIBLE);



        }
    });

This is a thread

private Runnable updateTimerThread = new Runnable() {

    int secs;

    @Override
    public void run() {
        // TODO Auto-generated method stub
        timeInMillisecond = SystemClock.uptimeMillis()- startTime;
        updatedTime = timeSwapBuff+timeInMillisecond;
        secs = (int)(updatedTime/1000);
        int mins = secs/60;
        secs = secs % 60;
        int milliseconds = (int)(updatedTime % 10000);
        textView.setText( String.format("%02d", secs));

        customHandler.postDelayed(this,1000);
        imageView1 = (ImageView)findViewById(R.id.imageView4);
switch(secs){
            case 1:     imageView1.setBackgroundResource(R.drawable.img1);
                        break;
            case 2:      imageView1.setBackgroundResource(R.drawable.img2);         
                        break;
            case 3:     imageView1.setBackgroundResource(R.drawable.img3);
                        break;
            case 4:      imageView1.setBackgroundResource(R.drawable.img4);         
                        break;
            case 5:     imageView1.setBackgroundResource(R.drawable.img5);
                        break;
            case 6:      imageView1.setBackgroundResource(R.drawable.img6);         
                        break;
            case 7:     imageView1.setBackgroundResource(R.drawable.img7);
                        break;
            case 8:      imageView1.setBackgroundResource(R.drawable.img8);         
                        break;
            case 9:     imageView1.setBackgroundResource(R.drawable.img9);
                        break;
            case 10:      imageView1.setBackgroundResource(R.drawable.img66);
                        button.setVisibility(View.VISIBLE);
                        break;


}};
Devendra Dagur
  • 840
  • 1
  • 14
  • 35

2 Answers2

1

Use a boolean flag.

boolean pause = false;
button2.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub
        customHandler.removeCallbacks(updateTimerThread);
        button.setVisibility(View.VISIBLE);

    pause = true;

    }
});
private Runnable updateTimerThread = new Runnable() {

int secs;

@Override
public void run() {
    // TODO Auto-generated method stub
    timeInMillisecond = SystemClock.uptimeMillis()- startTime;
    updatedTime = timeSwapBuff+timeInMillisecond;
    secs = (int)(updatedTime/1000);
    int mins = secs/60;
    secs = secs % 60;
    int milliseconds = (int)(updatedTime % 10000);
    textView.setText( String.format("%02d", secs));
    if(!pause)
        customHandler.postDelayed(this,1000);
    imageView1 = (ImageView)findViewById(R.id.imageView4);

}};
tianwei
  • 1,859
  • 1
  • 15
  • 24
0

Use this code inside the thread and whenever you want to pause the thread call pauseThread.

for(int i=0 ; ; i++)
        {
            // Only keep painting while "running" is true
            // This is a crude implementation of pausing the thread
            while (!running)
                yield;


    }

    public void pauseThread() 
    {
        running = false;
    }

    public void resumeThread()
    {
        running = true;
    }
Vaibhav Ajay Gupta
  • 463
  • 2
  • 4
  • 18