我希望我的應用程序在用戶觸摸GLSurfaceView時在GLSurfaceView上顯示ZoomButtonsController。我的活動構造是這樣的:泄漏IntentReceiver android.widget.ZoomButtonsController?
_zoomButtonsController = new ZoomButtonsController(_surface);
_zoomButtonsController.setAutoDismissed(true);
_zoomButtonsController.setOnZoomListener(_zoomListener); // Set listener
然後我重寫onTouchEvent()
使ZoomButtonsController可見當用戶生成一個ACTION_MOVE
事件:
/** Called when user generates touch event */
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_MOVE:
// Does this somehow register an IntentListener???
if (_zoomButtonsController != null) {
_zoomButtonsController.setVisible(true);
}
應用程序出現,直到我退出工作,此時我得到:
D/Solaris (22616): onDestroy() E/WindowManager(22616): Activity com.tomoreilly.solarisalpha.SolarisAlpha has leaked window [email protected] that was originally added here
和堆棧跟蹤是指線onTouchEvent
其中_zoomButtonsController.setVisible(true)
被調用。
這是爲什麼?爲什麼設置縮放按鈕控制器可見也會將其註冊爲意圖偵聽器?我怎麼取消註冊?我是否真的採用了正確的方法 - 即是否應該在Activity.onTouchEvent()
之內撥打ZoomButtonsController.setVisible(true)
?
感謝, 湯姆
感謝蓋伊 - 是的,調用ZoomButtonsController.setVisible(假)內Activity.onDestroy()解決眼前的問題。但我不明白爲什麼。有人可以請參閱ZoomButtonsController用法的完整示例嗎?我一直無法找到一個。 – Tom 2010-08-09 15:13:43
由於縮放控制器會創建一個窗口,因此您必須銷燬該窗口。 – 2010-08-09 16:54:34
Yikes - 我忽略了API中的一個聲明 - 它正好在我的面前:「如果您使用的是自定義視圖,請從onDetachedFromWindow()調用setVisible(false)。」多謝你們。 – Tom 2010-08-11 03:38:39