Fatal signal 11 (SIGSEGV), code 1, fault addr (Ren

2019-07-13 13:54发布

问题:

I'm trying to stop a service when an element attached to the windowmanager gets double clicked.

                @Override public boolean onTouch(View v, MotionEvent event) {
                switch (event.getAction()) {
                case MotionEvent.ACTION_DOWN:

                    // Get current time in nano seconds.
                    long pressTime = System.currentTimeMillis();


                    // If double click...
                    if (pressTime - lastPressTime <= 300) {
                        createNotification();
                        ServiceFloating.this.stopSelf();
                        mHasDoubleClicked = true;
                    }
                    else {     // If not double click....
                        mHasDoubleClicked = false;
                    }
                    lastPressTime = pressTime; 
                    initialX = paramsF.x;
                    initialY = paramsF.y;
                    initialTouchX = event.getRawX();
                    initialTouchY = event.getRawY();
                    break;
                case MotionEvent.ACTION_UP:
                        if(event.getRawX() - initialTouchX >40)
                    {
                        paramsF.x = (int)dispwidth;
                        paramsF.y = initialY + (int) (event.getRawY() - initialTouchY);
                        ObjectAnimator animY = ObjectAnimator.ofFloat(layout, "translationX", 100f, 0f);
                        animY.setDuration(1000);//1sec
                        animY.setInterpolator(new BounceInterpolator());
                        animY.setRepeatCount(0);
                        animY.start();
                    }
                    else if(initialTouchX-event.getRawX()>40){
                        paramsF.x = 0;
                        paramsF.y = initialY + (int) (event.getRawY() - initialTouchY);
                        ObjectAnimator animY = ObjectAnimator.ofFloat(layout, "translationX", -100f, 0f);
                        animY.setDuration(1000);//1sec
                        animY.setInterpolator(new BounceInterpolator());
                        animY.setRepeatCount(0);
                        animY.start();
                    }
                    windowManager.updateViewLayout(layout, paramsF);
                    break;
                case MotionEvent.ACTION_MOVE:
                    paramsF.x = initialX + (int) (event.getRawX() - initialTouchX);
                    paramsF.y = initialY + (int) (event.getRawY() - initialTouchY);
                    windowManager.updateViewLayout(layout, paramsF);
                    break;
                }
                return false;
            }
        });
    } catch (Exception e) {
        // TODO: handle exception
    }

But as soon as the element gets double clicked the app crashes with following in logcat:

swapBuffers encountered EGL_BAD_SURFACE on 0xb8f18fb0, halting rendering... 02-22 01:38:26.189 7191-7213/fr.anthonyfernandez.floatingmenu W/Adreno-EGLSUB﹕ : dequeue native buffer fail: No such device, buffer=0x0, handle=0x0 02-22 01:38:26.189 7191-7213/fr.anthonyfernandez.floatingmenu W/Adreno-EGLSUB﹕ : dequeue native buffer fail: No such device, buffer=0x0, handle=0x0 02-22 01:38:26.189 7191-7213/fr.anthonyfernandez.floatingmenu W/Adreno-EGL﹕ : EGL_BAD_SURFACE 02-22 01:38:26.189 7191-7213/fr.anthonyfernandez.floatingmenu W/OpenGLRenderer﹕ swapBuffers encountered EGL_BAD_SURFACE on 0xb8916958, halting rendering... 02-22 01:38:26.221 7191-7213/fr.anthonyfernandez.floatingmenu A/libc﹕ Fatal signal 11 (SIGSEGV), code 1, fault addr 0x54 in tid 7213 (RenderThread)