Google Groups

Android 3.0 drag-n-drop IllegalArgumentException after 30 actions


Dmitriy_Boichenko Sep 12, 2011 5:24 AM
Posted in group: android-platform
I'm working with android 3.0 drag-n-drop framework. All works fine.
But after 30 actions application causes IllegalArgumentException.

    09-12 11:17:32.282: WARN/Surface(31132): Not initializing the
shared buffer client because token = -12
    09-12 11:17:32.282: ERROR/View(31132): Unable to initiate drag
    09-12 11:17:32.282: ERROR/View(31132):
java.lang.IllegalArgumentException
    09-12 11:17:32.282: ERROR/View(31132):     at
android.view.Surface.lockCanvasNative(Native Method)
    09-12 11:17:32.282: ERROR/View(31132):     at
android.view.Surface.lockCanvas(Surface.java:350)
    09-12 11:17:32.282: ERROR/View(31132):     at
android.view.View.startDrag(View.java:11467)
    09-12 11:17:32.282: ERROR/View(31132):     at
com.example.drag.drop.Dot$1.onTouch(Dot.java:70)
    09-12 11:17:32.282: ERROR/View(31132):     at
android.view.View.dispatchTouchEvent(View.java:4605)
    09-12 11:17:32.282: ERROR/View(31132):     at
android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:
1560)
    09-12 11:17:32.282: ERROR/View(31132):     at
android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1291)
    09-12 11:17:32.282: ERROR/View(31132):     at
android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:
1560)
    09-12 11:17:32.282: ERROR/View(31132):     at
android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1291)
    09-12 11:17:32.282: ERROR/View(31132):     at
android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:
1560)
    09-12 11:17:32.282: ERROR/View(31132):     at
android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1291)
    09-12 11:17:32.282: ERROR/View(31132):     at
android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:
1560)
    09-12 11:17:32.282: ERROR/View(31132):     at
android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1291)
    09-12 11:17:32.282: ERROR/View(31132):     at
android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:
1560)
    09-12 11:17:32.282: ERROR/View(31132):     at
android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1291)
    09-12 11:17:32.282: ERROR/View(31132):     at
com.android.internal.policy.impl.PhoneWindow
$DecorView.superDispatchTouchEvent(PhoneWindow.java:1709)
    09-12 11:17:32.282: ERROR/View(31132):     at
com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:
1264)
    09-12 11:17:32.282: ERROR/View(31132):     at
android.app.Activity.dispatchTouchEvent(Activity.java:2315)
    09-12 11:17:32.282: ERROR/View(31132):     at
com.android.internal.policy.impl.PhoneWindow
$DecorView.dispatchTouchEvent(PhoneWindow.java:1682)
    09-12 11:17:32.282: ERROR/View(31132):     at
android.view.View.dispatchPointerEvent(View.java:4677)
    09-12 11:17:32.282: ERROR/View(31132):     at
android.view.ViewRoot.deliverPointerEvent(ViewRoot.java:2392)
    09-12 11:17:32.282: ERROR/View(31132):     at
android.view.ViewRoot.handleMessage(ViewRoot.java:2054)
    09-12 11:17:32.282: ERROR/View(31132):     at
android.os.Handler.dispatchMessage(Handler.java:99)
    09-12 11:17:32.282: ERROR/View(31132):     at
android.os.Looper.loop(Looper.java:132)
    09-12 11:17:32.282: ERROR/View(31132):     at
android.app.ActivityThread.main(ActivityThread.java:4123)
    09-12 11:17:32.282: ERROR/View(31132):     at
java.lang.reflect.Method.invokeNative(Native Method)
    09-12 11:17:32.282: ERROR/View(31132):     at
java.lang.reflect.Method.invoke(Method.java:491)
    09-12 11:17:32.282: ERROR/View(31132):     at
com.android.internal.os.ZygoteInit
$MethodAndArgsCaller.run(ZygoteInit.java:841)
    09-12 11:17:32.282: ERROR/View(31132):     at
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
    09-12 11:17:32.282: ERROR/View(31132):     at
dalvik.system.NativeStart.main(Native Method)
    09-12 11:17:34.272: WARN/WindowManager(4050): Drag already in
progress
    09-12 11:17:34.622: WARN/WindowManager(4050): Drag already in
progress
    09-12 11:17:34.912: WARN/WindowManager(4050): Drag already in
progress
    09-12 11:17:35.462: WARN/WindowManager(4050): Drag already in
progress
    09-12 11:17:35.782: WARN/WindowManager(4050): Drag already in
progress
    09-12 11:17:37.282: ERROR/WindowManager(4050): Unregister of
nonexistent drag input channel

Application again works fine after dalvinkvm calls for each DragEvent

    09-12 11:18:06.662: WARN/Surface(31132): Surface.finalize() has
work. You should have called release() (1720472, 0)

As you can see time delay between exception and finalization is
approximately 30 sec.

Same exception occurs on two example projects from books:

1)http://www.manning.com/collins/;  example on chapter 15:
http://www.manning-sandbox.com/thread.jspa?messageID=117809&tstart=0

2)http://www.apress.com/9781430232223; example on chapter 31

Question:

1)How finalize DragEvents properly?

or


2)How call Surface.finalize() if I'm working with GridView for
example?

Thanks.