這是我目前的學習練習,因爲我最終要做的是創建一個GestureListener
對象並將其重新分配給所有新的MyTouchView
對象。這個嵌套類會導致內存泄漏嗎?
(爲了簡便起見,我省略的代碼一些必要的比特。)
的問題是:爲下面的代碼,將在(可能)許多GestureListener
對象從最後確定預防嗎?如您所見,會創建大量GestureListener
對象 - 每次用戶翻頁時都會有一個對象。
public class MyActivity extends Activity
// Widgets
private ViewPager mViewPager;
private TextView mTVPageCount;
private TextView mTVTitle;
private Button mBShare;
private Button mBBack;
@Override
protected void onCreate(Bundle savedInstanceState) {
mTVPageCount = (TextView) findViewById(R.id.pagecount);
mTVTitle = (TextView) findViewById(R.id.title);
mBShare = (Button) findViewById(R.id.share);
mBBack = (Button) findViewById(R.id.back);
}
private class TouchAdapter extends PagerAdapter {
//pre-create neighboring views
@Override
public View instantiateItem(ViewGroup container, int position) {
MyTouchView img = new MyTouchView(container.getContext());
img.setOnDoubleTapListener(new GestureListener());
return img;
}
}
private class GestureListener implements GestureDetector.OnDoubleTapListener {
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
int iVisibility = mTVPageCount.getVisibility();
int iNewVisibility;
if (iVisibility == View.VISIBLE) {
iNewVisibility = View.GONE;
} else {
iNewVisibility = View.VISIBLE;
}
mTVPageCount.setVisibility(iNewVisibility);
mTVTitle.setVisibility(iNewVisibility);
mBShare.setVisibility(iNewVisibility);
mBBack.setVisibility(iNewVisibility);
return true;
}
}
}
上面的代碼是否工作?你什麼時候將'img'附加到容器?你實施'destroyItem'嗎? – 2014-09-11 02:43:26
'img'被返回,所以它是容器。 'destroyItem'被實現,它只是'container.removeView((View)object);' – 2014-09-11 18:04:31