2013-01-06 34 views
1

我主要有一个Activity类,一个广播类(广播接收器的子类)和其他几个类。我使用在广播级中创建的Handler,以便将来执行某些操作。但是如果有些情况出现(用户想要退出应用程序),我想要Handler取消(阻止执行)。来自主要活动的参考处理程序对象

我在SO上读了很多关于如何取消Handlers的线索,我知道如何从同一类(Handler.removeCallback (Runnable),Handler.removeMessages(0)等)。但我不知道如何取消我的Activity。 (用户按下退出按钮,如果处理程序将要做一些工作,我想要阻止它)。

那么如何引用Activity类中的处理程序对象(即将执行)呢?

回答

0

我不知道我完全理解你的问题,但是,如果你想通过活动取消Handler,你可以把它放在方法:

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

的方法被调用时,一项活动即将被用户隐藏起来。

重新阅读您的问题后,如果您的意思是您想访问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使用handler你BroadcastReceiverActivity类中。你必须确保你的BroadcastReceiver类是而不是 a static内部类的Activity

相关问题