viewpager setCurrentItem 过多出现卡顿 ANR 线程阻塞 页面无响应


本想让viewpager 默认显示在中间,实现无限轮播,可是,页面会卡住


原因是,viewpager setCurrentItem 设置后,是一页一页滑动到指定位置的,如果设置过多,就会卡死,


解决方法:不要设置太多就好,设置个几十就好


@UiThread
	void reflashSlideBannerData(String result) {
		if (result != null) {
			try {
				String list = new JSONObject(result).getString("list");
				JSONArray imgs = null;

				try {
					imgs = new JSONArray(list);
				} catch (Exception e) {
					Log.e("轮播图片只有一张,出现json转化失败");
					return;
				}

				slideImgsUrl = new String[imgs.length()];
				slideImgsHref = new String[imgs.length()];
				slideAdvertiseId = new int[imgs.length()];

				listImg = new ArrayList<String>();

				for (int i = 0; i < imgs.length(); i++) {
					JSONObject json = new JSONObject(imgs.get(i).toString());
					slideImgsUrl[i] = json.getString("Content");
					slideImgsHref[i] = json.getString("LinkUrl");
					slideAdvertiseId[i] = json.getInt("AdvertiseID");
					listImg.add(slideImgsUrl[i]);
				}

				slideImageAdapter = new ImageSlideBannerAdapter(LayoutInflater.from(this), this);
				myPager.setAdapter(slideImageAdapter);
				
				//设置跳跃幅度过大 ANR出现 设置为40就好
				//int listImg_size = (listImg.size() != 0)? (Integer.MAX_VALUE / 2) - (Integer.MAX_VALUE / 2 % listImg.size()) : 0;
				
				myPager.setCurrentItem(40);
				
				slideImageAdapter.notifyDataSetChanged();

				new Thread(new Runnable() {

					@Override
					public void run() {
						myPager.setInterval(2000); /// 设置滚动时间间隔
						myPager.setDirection(AutoScrollViewPager.RIGHT); // 设置滚动方向
						myPager.setCycle(true);
						myPager.setAutoScrollDurationFactor(8);
						myPager.setStopScrollWhenTouch(true);
						myPager.setBorderAnimation(true);
						myPager.startAutoScroll();
					}
				}).start();

				setOvalLayout(ovalLayout, R.layout.correcting3_pggmall_home_ad_bottom_item, R.id.ad_item_v,
						R.drawable.dot_focused, R.drawable.dot_normal, listImg);
				

			} catch (Exception e) {
			}
		}
	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值