我有一项服务,该服务从Internet接收命令并启动后台线程。该线程从服务传递给处理程序(服务已绑定(bind)并传递了处理程序),并向处理程序发送消息以拍照。我被卡在处理程序的实现上。

static Handler handler = new Handler() {

        @Override
        public void handleMessage(Message msg) {
            //TODO: Handle different types of messages
            mCamera.takePicture(null, null, MainActivity.this);
        }
};

问题:
  • 处理程序是否需要是静态的?没有静态,我得到“此处理程序类应该是静态的,否则可能会发生泄漏”
  • mCamera是否需要是静态的?我被告知要使mCamera静态,但是为什么这是必需的呢?有没有一种方法可以在不使mCamera静态化的情况下设置takePicture?
  • 将引用传递给MainActivity的正确方法是什么?现在,我收到错误消息:“范围内没有可访问类型MainActivity的封闭实例”
  • 最佳答案

    您可以使一个类( Activity/服务)实现Handler.Callback并通过new Handler(this)创建一个新的处理程序。

    10-07 19:35
    查看更多