使用地图我有一个活动,当没有可用的连接时启动,并使用离线地图(MapQuest)。活动运行正常,显示地图,以及所有叠加,标记等。当用户点击其中一个标记信息窗口时,将启动另一个活动,此时我在日志中收到一堆红色错误消息,但应用程序不会崩溃。这些消息(init在标题中)似乎谈论了ZoomButtons和触摸事件。对于代码中的ZoomButtons或触摸事件(多点触控),只有两行:
map.setBuiltInZoomControls(true);
map.setMultiTouchControls(true);
而不是任何对话......
如果我写:
map.setBuiltInZoomControls(假); map.setMultiTouchControls(假);
红色错误消息消失但当然用户无法以任何方式放大或缩小...
由于错误(带有“true”参数)仅在启动另一个活动时发生,我认为我必须在pause()中添加一些内容,即:
onPause(){
map.setBuiltInZoomControls(false);
map.setMultiTouchControls(false);
super.OnPause();
}
----但这样做并没有改变任何事情...... 任何提示??? - 提前致谢!
答案 0 :(得分:15)
将此添加到您的活动中:
@Override
public void finish() {
ViewGroup view = (ViewGroup) getWindow().getDecorView();
view.removeAllViews();
super.finish();
}
答案 1 :(得分:8)
我遇到了完全相同的问题...感谢您指出它是由(可能)当缩放控件仍然可见时引起的。我测试了它,这是正确的。当我按下显示变焦控制的后退按钮时,如果我等到控件逐渐消失(它们在你停止滚动后就会这样做),它会显示泄漏错误,然后没有泄漏错误。
WebSettings中的一项研究提供了一种不显示缩放控件的方法,这意味着在您想要按下后退按钮的任何时候它都不会泄漏。它仍然可以通过捏合效果进行缩放。使用此方法的唯一缺点是您的控件无法显示。但对我来说,这是值得的,因为大多数用户都知道所有应用的缩放缩放。
以下是我使用的内容:
// make sure your pinch zoom is enabled
webView.getSettings().setBuiltInZoomControls(true);
// don't show the zoom controls
webView.getSettings().setDisplayZoomControls(false);
答案 2 :(得分:1)
此泄漏窗口的问题未出现在以下版本的Android 3.0中,因此,您可以尝试执行此操作:
// enabled zoom support
getSettings().setSupportZoom(true);
getSettings().setBuiltInZoomControls(true);
// but,We should hide this button, otherwise in the version
// of Android 3 and above, there is a window leak.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
// call requies API Level 11 ( Android 3.0 + )
getSettings().setDisplayZoomControls(false);
}