2013-01-06 5 views
1

메인 클래스는 Activity이고, 브로드 캐스트 클래스 (브로드 캐스트 리시버의 서브 클래스)와 몇 개의 다른 클래스가 있습니다. 나는 브로드 캐스트 클래스에서 생성 된 Handler을 사용한다. 그러나 어떤 상황 (사용자가 앱을 종료하고 싶음)이 올 경우, Handler이 취소 (실행되지 않도록)하고 싶습니다.메인 액티비티의 참조 핸들러 객체

나는 많은 스레드를 읽으므로 Handlers을 취소하는 방법을 알고 있으며 같은 클래스 (Handler.removeCallback (Runnable), 등)의 방법을 알고 있습니다. 하지만 내 Activity에서 취소하는 방법을 모르겠습니다. (사용자가 종료 버튼을 누르면, 핸들러가 일부 작업을 수행 할 경우이를 방지하기를 원합니다).

그래서 Activity 클래스의 핸들러 객체 (참조)가 어떻게 참조 될까요?

답변

0

당신이 활동을 통해 Handler을 취소 할 경우 I는, 그러나, 나는 완전히 질문을 이해 모르겠지만, 당신은 onPause 방법에 넣을 수 있습니다

@Override 
public void onPause() { 
    super.onPause(); 
    handler.removeCallbacks(runnable); 
} 

onPause 방법은 때 호출되는 활동이 사용자에게 숨겨 지려하고 있습니다.

Activity 클래스의 BroadcastReceiver 클래스에서 처리기에 액세스하려는 경우 질문을 다시 읽은 다음 처리기를 활동의 멤버 변수로 지정해야합니다.

public class MyActivity extends Activity { 

    private Handler mHandler = new Handler(); 

    public class BroadcastReceiver mReceiver = new BroadcastReceiver() { 

     public void onReceive (Context context, Intent intent) { 
      // ... use mHandler in here .... 
      mHandler.postDelayed(runnable, 1000); 
     } 

    } 

    // ... rest of the code ... 

    @Override 
    public void onPause() { 
     super.onPause(); 
     handler.removeCallbacks(runnable); 
    } 

} 

당신은 mHandler를 사용하여 BroadcastReceiverActivity 클래스 내부의 핸들러를 사용할 수 있습니다. BroadcastReceiver 클래스가 이 아니고이 아닌 static 내부 클래스가 Activity임을 확인해야합니다.