Java 从主活动引用处理程序对象
我有一个主要的Java 从主活动引用处理程序对象,java,android,handler,Java,Android,Handler,我有一个主要的活动类,一个广播类(广播接收器的子类)和一些其他类。我使用在broadcast类中创建的处理程序,以便将来做一些事情。但如果出现某些情况(用户希望退出应用程序),我希望处理程序取消(阻止执行) 我在SO中读了很多关于如何取消处理程序的线程,我知道如何从同一个类(Handler.removeCallback(Runnable),Handler.removeMessages(0)等)。但是我不知道如何从我的活动中取消它。(用户按下退出按钮,若处理程序要做一些工作,我想阻止它) 那么,我
活动
类,一个广播类(广播接收器的子类)和一些其他类。我使用在broadcast类中创建的处理程序
,以便将来做一些事情。但如果出现某些情况(用户希望退出应用程序),我希望处理程序取消(阻止执行)
我在SO中读了很多关于如何取消处理程序的线程,我知道如何从同一个类(Handler.removeCallback(Runnable)
,Handler.removeMessages(0)
等)。但是我不知道如何从我的活动中取消它。(用户按下退出按钮,若处理程序要做一些工作,我想阻止它)
那么,我如何从活动类中引用该处理程序对象(将要执行)?我不确定我是否完全理解您的问题,但是,如果您想通过活动取消处理程序,您可以将其放在onPause
方法中:
@Override
public void onPause() {
super.onPause();
handler.removeCallbacks(runnable);
}
当一个活动即将对用户隐藏时,调用onPause
方法
重读您的问题后,如果您的意思是希望从活动
类访问广播接收器
类中的处理程序,则应将该处理程序设置为活动的成员变量
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
类不是活动的内部类的静态类