android.view.WindowLeaked:Activity已泄漏窗口android.widget.ZoomButtonsController $ Container最初在这里添加

Phi*_*lin 8 maps osmdroid

使用地图我有一个活动,当没有可用的连接时启动,并使用离线地图(MapQuest).活动运行正常,显示地图,以及所有叠加,标记等.当用户点击其中一个标记信息窗口时,将启动另一个活动,此时我在日志中收到一堆红色错误消息,但应用程序不会崩溃.这些消息(init在标题中)似乎谈论了ZoomButtons和触摸事件.对于代码中的ZoomButtons或触摸事件(多点触控),只有两行:

map.setBuiltInZoomControls(true);
map.setMultiTouchControls(true);
Run Code Online (Sandbox Code Playgroud)

而不是任何对话......

  • 如果我写:

    map.setBuiltInZoomControls(假); map.setMultiTouchControls(假);

红色错误消息消失但当然用户无法以任何方式放大或缩小...

由于错误(带有"true"参数)仅在启动另一个活动时发生,我认为我必须在pause()上添加一些内容,即:

onPause(){
map.setBuiltInZoomControls(false);
map.setMultiTouchControls(false);
super.OnPause();
}
Run Code Online (Sandbox Code Playgroud)

----但这样做并没有改变任何东西......任何提示??? - 提前致谢!

Sim*_*lin 15

将此添加到您的活动中:

@Override
public void finish() {
    ViewGroup view = (ViewGroup) getWindow().getDecorView();
    view.removeAllViews();
    super.finish();
}
Run Code Online (Sandbox Code Playgroud)


Azu*_*pot 8

我有完全相同的问题...感谢你指出它是由(可能)当缩放控件仍然可见时引起的.我测试了它,这是正确的.当我按下显示变焦控制的后退按钮时,它会显示泄漏错误,如果我等到控件逐渐消失(它们在您停止滚动后执行),则没有泄漏错误.

WebSettings中进行的一项研究提供了一种不显示缩放控件的方法,这意味着在您想要按下后退按钮的任何时候它都不会泄漏.它仍然可以通过捏合效果进行缩放.使用此方法的唯一缺点是您的控件不会显示.但对我来说,这是值得的,因为大多数用户都知道所有应用程序的缩放缩放.

这是我用过的:

// make sure your pinch zoom is enabled
 webView.getSettings().setBuiltInZoomControls(true);

// don't show the zoom controls
 webView.getSettings().setDisplayZoomControls(false);
Run Code Online (Sandbox Code Playgroud)