I am writing an android app that runs a service in the background that makes use of the OVERLAY_PERMISSION
to draw on other apps. It starts with an intent from a button on my main activity. So far, so good.
In my service, in my onDestroy()
, I have a if (myView != null) windowManager.removeView(myView);
. And when I call stopService from the activity, I get an error, saying:
java.lang.RuntimeException: Unable to stop service com.supernovaapps.cameralevel.LevelService@ed1633f: java.lang.IllegalArgumentException: View=android.widget.AbsoluteLayout{94fb155 V.E...... ......I. 0,0-0,0} not attached to window manager
I am only able to close the service if I comment out that line. However, if I do that, the view remains on the screen even after the service is closed, which is not what I want.
What is the correct way to close the service and detach the view?
Full Trace:
12-20 20:16:10.042 21233-21233/com.supernovaapps.cameralevel E/AndroidRuntime: FATAL EXCEPTION: main
12-20 20:16:10.042 21233-21233/com.supernovaapps.cameralevel E/AndroidRuntime: Process: com.supernovaapps.cameralevel, PID: 21233
12-20 20:16:10.042 21233-21233/com.supernovaapps.cameralevel E/AndroidRuntime: java.lang.RuntimeException: Unable to stop service com.supernovaapps.cameralevel.LevelService@ed1633f: java.lang.IllegalArgumentException: View=android.widget.AbsoluteLayout{94fb155 V.E...... ......I. 0,0-0,0} not attached to window manager
12-20 20:16:10.042 21233-21233/com.supernovaapps.cameralevel E/AndroidRuntime: at android.app.ActivityThread.handleStopService(ActivityThread.java:3059)
12-20 20:16:10.042 21233-21233/com.supernovaapps.cameralevel E/AndroidRuntime: at android.app.ActivityThread.-wrap21(ActivityThread.java)
12-20 20:16:10.042 21233-21233/com.supernovaapps.cameralevel E/AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1447)
12-20 20:16:10.042 21233-21233/com.supernovaapps.cameralevel E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:102)
12-20 20:16:10.042 21233-21233/com.supernovaapps.cameralevel E/AndroidRuntime: at android.os.Looper.loop(Looper.java:148)
12-20 20:16:10.042 21233-21233/com.supernovaapps.cameralevel E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5417)
12-20 20:16:10.042 21233-21233/com.supernovaapps.cameralevel E/AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
12-20 20:16:10.042 21233-21233/com.supernovaapps.cameralevel E/AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
12-20 20:16:10.042 21233-21233/com.supernovaapps.cameralevel E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
12-20 20:16:10.042 21233-21233/com.supernovaapps.cameralevel E/AndroidRuntime: Caused by: java.lang.IllegalArgumentException: View=android.widget.AbsoluteLayout{94fb155 V.E...... ......I. 0,0-0,0} not attached to window manager
12-20 20:16:10.042 21233-21233/com.supernovaapps.cameralevel E/AndroidRuntime: at android.view.WindowManagerGlobal.findViewLocked(WindowManagerGlobal.java:424)
12-20 20:16:10.042 21233-21233/com.supernovaapps.cameralevel E/AndroidRuntime: at android.view.WindowManagerGlobal.removeView(WindowManagerGlobal.java:350)
12-20 20:16:10.042 21233-21233/com.supernovaapps.cameralevel E/AndroidRuntime: at android.view.WindowManagerImpl.removeView(WindowManagerImpl.java:111)
12-20 20:16:10.042 21233-21233/com.supernovaapps.cameralevel E/AndroidRuntime: at com.supernovaapps.cameralevel.LevelService.onDestroy(LevelService.java:164)
12-20 20:16:10.042 21233-21233/com.supernovaapps.cameralevel E/AndroidRuntime: at android.app.ActivityThread.handleStopService(ActivityThread.java:3040)
12-20 20:16:10.042 21233-21233/com.supernovaapps.cameralevel E/AndroidRuntime: at android.app.ActivityThread.-wrap21(ActivityThread.java)
12-20 20:16:10.042 21233-21233/com.supernovaapps.cameralevel E/AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1447)
12-20 20:16:10.042 21233-21233/com.supernovaapps.cameralevel E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:102)
12-20 20:16:10.042 21233-21233/com.supernovaapps.cameralevel E/AndroidRuntime: at android.os.Looper.loop(Looper.java:148)
12-20 20:16:10.042 21233-21233/com.supernovaapps.cameralevel E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5417)
12-20 20:16:10.042 21233-21233/com.supernovaapps.cameralevel E/AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)