Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从主活动引用处理程序对象_Java_Android_Handler - Fatal编程技术网

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
类不是
活动的
内部类的
静态类