1、Handler不销毁
Handler可能出现内存泄漏问题(Activity的生命周期没有Handler的生命周期大),如果Handler不销毁,那么Handler就会一直执行,activity就不会销毁,可以在startScroll()方法中添加Log,然后退出当前Activity,查看该Log是否一直在打印。
解决思路:当Activity退出时,会调用onDetachedFromWindow()方法,我们在这里将Handler移除即可。
@Override
protected void onDetachedFromWindow() {
mHandler.removeMessages(SCROLL_MSG);
mHandler = null;
super.onDetachedFromWindow();
}
在ViewPager源码也是这么做的:
@Override
protected void onDetachedFromWindow() {
removeCallbacks(mEndScrollRunnable);
// To be on the safe side, abort the scroller
if ((mScroller != null) && !mScroller.isFinished()) {
mScroller.abortAnimation();
}
super.onDetachedFromWindow();
}
2、界面复用
mBannerView.setAdapter(new BannerAdapter() {
@Override
public View getView(int position) {
String url = result.get(position).getBanner_url().getUrl_list().get(0).getUrl();
ImageView iv = new