我有一个服务,它接收来自互联网的命令并启动后台线程。该线程从服务传递一个处理程序(该服务是有界的并传递该处理程序)并向该处理程序发送一条消息以拍照。我被困在处理程序的实现上。
static Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
//TODO: Handle different types of messages
mCamera.takePicture(null, null, MainActivity.this);
}
};
问题:
- Handler 需要是静态的吗?如果没有静态,我得到“这个处理程序类应该是静态的,否则可能会发生泄漏”
- mCamera 需要静态吗?有人告诉我要将 mCamera 设为静态,但为什么有必要这样做呢?有没有办法设置 takePicture 而不使 mCamera 静态?
- 将引用传递给 MainActivity 的正确方法是什么?现在我收到错误:“在范围内无法访问 MainActivity 类型的封闭实例”
您可以使类(活动/服务)实现Handler.Callback
并通过以下方式为其创建一个新的处理程序new Handler(this)
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)