마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

버튼이 클릭될 때만 핸들러가 작동하게 하는 방법이 있을까요?

0 추천
	public void sendSms(View v) {
		
		Thread thread=new Thread(){
			   public void run(){
			    while(power){
			    	
			    	if(reach<=3){
			              try { 
			                Thread.sleep(30000); //30초 딜레이
			              } catch (InterruptedException e) { 
			              }
			          }
			          else{
			              /*
			              sm.sendTextMessage(
			                  editTextPhoneNumber.getText().toString(),
			                  null,
			                  "테스트",
			                  null,
			                  null);
			                  */
			              Log.d("sendSms","running");
			              try { 
			                Thread.sleep(2000); 
			              } catch (InterruptedException e) { 
			              }
			          }
			    	
			     handler.sendEmptyMessage(0);
			     try {
			      Thread.sleep(1000);
			     } catch (InterruptedException e) {
			     }
			   
			    }
			   }
			  };
			  thread.setDaemon(true);
			  thread.start();
         
    }
	
	//위에서 발생한 sendMessage 는 여기서 받게 된다. 
	public Handler handler=new Handler(){
	  
	  public void handleMessage(Message msg){
		  
				power = false;
				Toast.makeText(FbActivity.this, "알림OFF", Toast.LENGTH_SHORT).show();
		 
	  }
	 
	 };

 

현재 소스에서는 자동으로 핸들러가 작동되어 1회만 반복한 뒤 바로 power값이 false가 돼버립니다.

저는 저 while문이 계속 반복되다가

버튼이 다시 눌렸을 때만 핸들러가 작동하여 while문을 벗어나게 만들고 싶습니다.

소스를 어떻게 고치면 좋을까요?

뮴뮴 (140 포인트) 님이 2015년 5월 21일 질문

1개의 답변

0 추천
버튼 이벤트안에 power = false 해주면 끝날거 같은데요?

위 코드를 말씀하신대로 작동하게 한다 하면 굳이 핸들러를 이용할 필요가 없어보이는데...

 

아니면 handler.sendEmptyMessage(0) 이거를 버튼이벤트 안에서 해줘도 되구요.
아시리 (8,400 포인트) 님이 2015년 5월 22일 답변
아시리님이 2015년 5월 22일 수정
...