【问题标题】:Weird Exception when Livewallpaper is set in Android在 Android 中设置动态壁纸时出现奇怪的异常
【发布时间】:2011-04-24 05:41:36
【问题描述】:
04-24 13:30:59.312: VERBOSE/RenderScript(6044): RS Thread exited
04-24 13:30:59.320: ERROR/libEGL(6044): call to OpenGL ES API with no current context (logged once per thread)
04-24 13:30:59.335: WARN/WallpaperService(6044): Ignoring updateSurface: destroyed
04-24 13:30:59.335: WARN/WindowManager(108): Window android.view.IWindow$Stub$Proxy@408968d0 is already added
04-24 13:30:59.355: DEBUG/dalvikvm(6083): GC_EXTERNAL_ALLOC freed 23K, 52% free 2598K/5379K, external 1625K/2137K, paused 55ms
04-24 13:30:59.425: DEBUG/GLWallpaperService(6083): onSurfaceDestroyed()
04-24 13:30:59.496: WARN/InputQueue-JNI(6044): Input channel is not initialized.
04-24 13:30:59.515: DEBUG/AndroidRuntime(6044): Shutting down VM
04-24 13:30:59.539: WARN/dalvikvm(6044): threadid=1: thread exiting with uncaught exception (group=0x40015560)
04-24 13:30:59.640: ERROR/AndroidRuntime(6044): FATAL EXCEPTION: main
04-24 13:30:59.640: ERROR/AndroidRuntime(6044): java.lang.RuntimeException: Failed to register input channel.  Check logs for details.
04-24 13:30:59.640: ERROR/AndroidRuntime(6044):     at android.view.InputQueue.nativeRegisterInputChannel(Native Method)
04-24 13:30:59.640: ERROR/AndroidRuntime(6044):     at android.view.InputQueue.registerInputChannel(InputQueue.java:92)
04-24 13:30:59.640: ERROR/AndroidRuntime(6044):     at android.service.wallpaper.WallpaperService$Engine.updateSurface(WallpaperService.java:521)
04-24 13:30:59.640: ERROR/AndroidRuntime(6044):     at android.service.wallpaper.WallpaperService$IWallpaperEngineWrapper.executeMessage(WallpaperService.java:904)
04-24 13:30:59.640: ERROR/AndroidRuntime(6044):     at com.android.internal.os.HandlerCaller$MyHandler.handleMessage(HandlerCaller.java:61)
04-24 13:30:59.640: ERROR/AndroidRuntime(6044):     at android.os.Handler.dispatchMessage(Handler.java:99)
04-24 13:30:59.640: ERROR/AndroidRuntime(6044):     at android.os.Looper.loop(Looper.java:123)
04-24 13:30:59.640: ERROR/AndroidRuntime(6044):     at android.app.ActivityThread.main(ActivityThread.java:3683)
04-24 13:30:59.640: ERROR/AndroidRuntime(6044):     at java.lang.reflect.Method.invokeNative(Native Method)
04-24 13:30:59.640: ERROR/AndroidRuntime(6044):     at java.lang.reflect.Method.invoke(Method.java:507)
04-24 13:30:59.640: ERROR/AndroidRuntime(6044):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
04-24 13:30:59.640: ERROR/AndroidRuntime(6044):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
04-24 13:30:59.640: ERROR/AndroidRuntime(6044):     at dalvik.system.NativeStart.main(Native Method)

我正在开发一个动态壁纸,它使用一个名为 Andengine(andengine.org) 的开源游戏引擎,它现在工作正常,除了有时当用户将我的动态壁纸设置为壁纸时,会抛出一个异常,说“注册输入失败频道。查看日志以获取详细信息。”,但奇怪的是动态壁纸仍然有效并且没有退出。

知道是什么原因导致了这个问题,或者我该如何解决?

【问题讨论】:

  • (1) 你检查过“日志”吗? (2) 堆栈跟踪中是否有以“caused by:”开头的第二轮?
  • @Aleadam 不,只有一轮堆栈跟踪。我发现与此问题相关的唯一日志是“在没有当前上下文的情况下调用 OpenGL ES API(每个线程记录一次)”,正如我在上面列出的那样
  • @Aleadam 也“输入通道未初始化”
  • @Aleadam 我发现这是因为我使用启动器 pro 进行测试,当用户单击“设置壁纸”按钮时,它不会释放 OpenGL ES 当前使用的硬件

标签: android game-engine live-wallpaper andengine


【解决方案1】:

抱歉,我只能发现InputQueue“为应用程序提供了一种机制来接收传入的输入事件。目前只能从本机代码中使用”。

检查 andengine 中的GLSurfaceView 类。这可能会让你知道你的壁纸有什么问题

您可能还想检查为什么会发生这种情况:

04-24 13:30:59.320: ERROR/libEGL(6044): call to OpenGL ES API with no current context (logged once per thread)

【讨论】:

  • 非常感谢,我发现它与Launcher Pro有关,在用户将我设置为壁纸后没有释放硬件足够快。如果我更改为 android 原始主屏幕,异常就消失了。
  • Launcher Pro 存在问题。我已经看到了一些奇怪的错误(尽管恕我直言仍然是最好的启动器)。我会考虑向他们发送错误报告,以便他们尝试修复它并尽快发布硬件。
  • 是的,但我不确定是什么原因,但肯定是他们的问题,所以我会向他们发送错误报告。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多