由于系统覆盖,退出活动时窗口泄漏



我想创建一个覆盖,是可见的所有时间,在每一个其他的应用程序。我使用下面的代码按钮点击在我的活动

WindowManager.LayoutParams params = new WindowManager.LayoutParams(
                WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
                WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN,
                PixelFormat.TRANSLUCENT
                );
WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
windowManager.addView(myViewGroup, params);

它工作,但它给了我一个错误,当我退出应用程序:

E/WindowManager(17254): android.view.WindowLeaked: 
Activity com.myPackage.myApp.MainActivity has leaked window
com.myPackage.myApp.MainActivity$myViewGroup{4269d670 V.E..... ........ 0,0-1024,1024} 
that was originally added here

如何避免这个错误?

技巧是使用getApplicationContext().getSystemService(WINDOW_SERVICE)

当您简单地使用getSystemService(WINDOW_SERVICE)时,您正在使用活动的上下文。当您退出活动时,此上下文不再存在,因此它将导致窗口泄漏错误。

最新更新