小编Mat*_* J.的帖子

从接收者自己的onReceive()方法中取消注册"动态"BroadcastReceiver是否可以?

也就是说,我有这个我直接创建的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但是无法取消注册.

android android-intent android-broadcast

5
推荐指数
1
解决办法
1300
查看次数

如何在EGL或GLSurfaceView中设置OpenGL版本?

对于我正在研究的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)之前设置渲染上下文?

android opengl-es opengl-es-2.0 egl

2
推荐指数
1
解决办法
9454
查看次数