也就是说,我有这个我直接创建的BroadcastReceiver来监听一个广播,之后我希望它取消注册.
我没有找到任何这样做的示例代码,但我也没有在android在线文档中发现任何禁止此规则的规则.但是我不能让它像活动一样长期存在,而且无论如何它都在匿名类中,因此包含类甚至不知道变量名.
也就是说,代码看起来像这样:
myInfoReceiver = new BroadcastReceiver() {
onReceive(Context ctx, Intent intt) {
// do some Notification when I get here
nm.notify("I got here") // obvious pseudo code
ctx.unregisterReceiver(myInfoReceiver);
} // end onReceive
ctx.registerReceiver),uInfoReceiver, new IntentFilter(...));
}; // end BroadcastReceiver
Run Code Online (Sandbox Code Playgroud)
但是当我运行它时,Android会在调用取消注册时抱怨,坚持说接收器不在那里取消注册(我忘记了确切的措辞,但它抛出了IllegalArgumentException).
我还尝试修改代码以检查'intt'中的操作是否与预期相同 - 但是它仍然执行onReceive但是无法取消注册.
对于我正在研究的OpenGL Android项目,我需要ES 2.0,但我需要控制渲染缓冲区/表面,我习惯于使用EGL实现.因为我无法想出使用GLSurfaceView渲染到屏幕外缓冲区的任何方法,然后永远不会显示缓冲区.即使我使用GLSurfaceView.EGLContextFactory,如果没有Android EGL包中没有包含的EGL 1.2函数/常量(例如EGL_CONTEXT_CLIENT_VERSION),我想不出任何方法可以实现这一点.
所以第一个显而易见的问题是:有没有办法1)尽管省略了EGL_CONTEXT_CLIENT_VERSION和eglBindAPI(),使用EGL和ES 2.0?2)是否有一些新的API用于在调用GLSurfaceView的回调surfaceCreated(EGLConfig)之前设置渲染上下文?