我有一个主要的Activity
类,一个广播类(广播接收器的子类)和一些其他类。我使用在广播类中创建的 Handler
来处理将来要做的一些事情。但如果出现某些情况(用户想要退出应用程序),我希望该 Handler 取消(防止被执行)。
我在SO中阅读了很多关于如何取消Handlers
的线程,并且我知道如何从同一个类(Handler.removeCallback(Runnable)
,Handler .removeMessages(0)
等)。但我不知道如何从我的 Activity
中取消它。 (用户按下退出按钮,如果处理程序要执行一些工作,我想阻止它)。
那么我如何从 Activity
类引用该处理程序对象(将要执行)?
最佳答案
我不确定我是否完全理解您的问题,但是,如果您想通过 Activity 取消 Handler
,您可以将其放入 onPause
方法中:
@Override
public void onPause() {
super.onPause();
handler.removeCallbacks(runnable);
}
当 Activity 即将对用户隐藏时,将调用 onPause
方法。
重新阅读您的问题后,如果您的意思是要从 Activity
类访问 BroadcastReceiver
类内的处理程序,那么您应该将处理程序设置为您的 Activity 的成员变量。
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
在 BroadcastReceiver
和 Activity
类中使用处理程序。您必须确保您的 BroadcastReceiver
类不是 Activity
的 static
内部类。
关于java - 从主 Activity 引用处理程序对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14182846/