2015-08-18 4 views
0

я использую две тему, когда кнопка паузы pauseb нажато только паузу текста отображение мне нужно сделать паузу кнопки нити недо нажат сновамне нужно, чтобы приостановить поток, когда кнопка паузы нажата

handler1=new Handler(); 
     j=new Runnable(){ 
     public void run() { 

      AbsoluteLayout.LayoutParams absParams = 
        (AbsoluteLayout.LayoutParams) b2.getLayoutParams(); 

      DisplayMetrics displaymetrics = new DisplayMetrics(); 
      getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); 
      int width = displaymetrics.widthPixels; 
      int height = displaymetrics.heightPixels; 


      Random r = new Random(); 



      absParams.x = r.nextInt(width); 
      absParams.y = r.nextInt(height); 
      b2.setLayoutParams(absParams); 
      Animation animation = AnimationUtils.loadAnimation(page2.this, R.anim.fade); 
      b2.startAnimation(animation); 
      handler1.postDelayed(j, 870); 
     }}; 
    handler1.postDelayed(j, 50); 





    final Button pauseb = (Button) findViewById(R.id.pauseid); 
    pauseb.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (pause == false) { 
       pauseb.setText("Pause"); 
       pause = true; 

      } 

        else{ 

        pauseb.setText("Play"); 
        pause = false; 
       } 
       } 

      }); 


      handler = new Handler(); 

      t = new Runnable() { 
       public void run() { 
        Intent d = new Intent(getApplicationContext(), Page3.class); 
        d.putExtra("count", count); 
        d.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
        startActivity(d); 


       } 
      }; 

      handler.postDelayed(t, 8000); 
     } 

резьба работает в течение 8 секунд, когда нажата кнопка паузы, она должна приостановить всю активность до повторения

+0

Я не вижу темы, помимо формирования пользовательского интерфейса один. – Gordak

+0

обработчик и обработчик1 – user3409897

+0

Обработчики не являются нитями. Весь код, видимый здесь, работает в одном потоке: поток пользовательского интерфейса. – Gordak

ответ

0

call handler.removeCallbacks (j или t) для удаления j или t.

и вызвать handler.postDelayed (j или t, time), чтобы продолжить ваши вещи.

, кстати, обработчик работает Runnable на потоке, где вы создаете обработчика. В вашем случае это поток пользовательского интерфейса.

0

Использование Boolean Флаг ....

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); 

}}; 
Смежные вопросы