orientation - IllegalArgumentException while rotating device in Live Wallpaper picker Android 3.0 -
i'm developing live wallpaper honeycomb 3.0, random error.
when i'm in wallpaper picker (the window "set wallpaper" , "settings..." buttons, understand) , live wallpaper displayed, if rotate device, wallpaper should reload configuration adapted new orientation. does, crashes.
the error in way related basesurfaceholder.unlockcanvasandpost method, don't know issue. think cannot load correctly resources..
here's error log:
07-21 16:07:38.490: warn/windowmanager(292): java.lang.illegalargumentexception: requested window android.os.binderproxy@40d19f28 not exist 07-21 16:07:38.490: warn/windowmanager(292): @ com.android.server.wm.windowmanagerservice.windowforclientlocked(windowmanagerservice.java:6731) 07-21 16:07:38.490: warn/windowmanager(292): @ com.android.server.wm.windowmanagerservice.windowforclientlocked(windowmanagerservice.java:6722) 07-21 16:07:38.490: warn/windowmanager(292): @ com.android.server.wm.windowmanagerservice.removewindow(windowmanagerservice.java:2414) 07-21 16:07:38.490: warn/windowmanager(292): @ com.android.server.wm.session.remove(session.java:149) 07-21 16:07:38.490: warn/windowmanager(292): @ android.view.iwindowsession$stub.ontransact(iwindowsession.java:120) 07-21 16:07:38.490: warn/windowmanager(292): @ com.android.server.wm.session.ontransact(session.java:111) 07-21 16:07:38.490: warn/windowmanager(292): @ android.os.binder.exectransact(binder.java:320) 07-21 16:07:38.490: warn/windowmanager(292): @ dalvik.system.nativestart.run(native method) 07-21 16:07:38.490: error/androidruntime(20768): fatal exception: main 07-21 16:07:38.490: error/androidruntime(20768): java.lang.illegalargumentexception 07-21 16:07:38.490: error/androidruntime(20768): @ android.view.surface.unlockcanvasandpost(native method) 07-21 16:07:38.490: error/androidruntime(20768): @ com.android.internal.view.basesurfaceholder.unlockcanvasandpost(basesurfaceholder.java:215) 07-21 16:07:38.490: error/androidruntime(20768): @ mx.livewallpaper.clock.cubewallpaper1$cubeengine.drawframe(cubewallpaper1.java:686) 07-21 16:07:38.490: error/androidruntime(20768): @ mx.livewallpaper.clock.cubewallpaper1$cubeengine$1.run(cubewallpaper1.java:292) 07-21 16:07:38.490: error/androidruntime(20768): @ android.os.handler.handlecallback(handler.java:587) 07-21 16:07:38.490: error/androidruntime(20768): @ android.os.handler.dispatchmessage(handler.java:92) 07-21 16:07:38.490: error/androidruntime(20768): @ android.os.looper.loop(looper.java:132) 07-21 16:07:38.490: error/androidruntime(20768): @ android.app.activitythread.main(activitythread.java:4028) 07-21 16:07:38.490: error/androidruntime(20768): @ java.lang.reflect.method.invokenative(native method) 07-21 16:07:38.490: error/androidruntime(20768): @ java.lang.reflect.method.invoke(method.java:491) 07-21 16:07:38.490: error/androidruntime(20768): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:844) 07-21 16:07:38.490: error/androidruntime(20768): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:602) 07-21 16:07:38.490: error/androidruntime(20768): @ dalvik.system.nativestart.main(native method) 07-21 16:07:38.500: error/android.os.debug(292): dumpstate > /data/log/dumpstate_app_error
edit: code below drawframe() method @ line 686:
void drawframe() { final surfaceholder holder = getsurfaceholder(); canvas c = null; try { c = holder.lockcanvas(); if (c != null) { drawlogo3(c); } } { if (c != null) holder.unlockcanvasandpost(c); }
it's default method ppresent in live wallpapers, took cubewallpaper live wallpaper sample android sdk.
edit 2:
it sounds buffer error. if set framerate 10fps instead of 40fps, live wallpaper picker doesn't crash @ all. possible edit live wallpaper behaviour activity "live wallpaper picker"?
have thread join before destroy surface
@override public void onsurfacedestroyed(surfaceholder holder) { try { updater.join(); } catch (interruptedexception e) { } super.onsurfacedestroyed(holder); }
Comments
Post a Comment