Java 该应用程序可在WIFI上运行,但不能在3G上运行

Java 该应用程序可在WIFI上运行,但不能在3G上运行,java,android,android-volley,Java,Android,Android Volley,有两个活动:Main和Detail活动 主要活动基本上是一个网格视图。 详细信息活动基本上是显示单击项目的详细信息。我正在将所选项目的id(pid)从Main传递到Detail活动 我面临的问题如下。最初,我有3G连接(手机连接),点击第一个项目,在详细信息活动中看到相应的项目详细信息,效果非常好,然后返回到主要活动,然后点击第二个项目,不幸的是,它仍然显示了我最初单击的DetailActivity中的第一项 当应用程序处于活动和打开状态时,我从3g切换到wifi。无论单击什么,它都会显示我最初

有两个活动:
Main
Detail
活动

主要活动
基本上是一个网格视图。
详细信息活动
基本上是显示单击项目的详细信息。我正在将所选项目的id(
pid
)从
Main
传递到
Detail
活动

我面临的问题如下。最初,我有
3G
连接(手机连接),点击第一个项目,在
详细信息活动中看到相应的项目详细信息,效果非常好,然后返回到
主要活动
,然后点击第二个项目,不幸的是,它仍然显示了我最初单击的
DetailActivity
中的第一项

当应用程序处于活动和打开状态时,我从
3g
切换到
wifi
。无论单击什么,它都会显示我最初单击的第一个项目

但是,当我删除并重新安装应用程序,并获得
wifi
accessonly时,应用程序运行得非常好

在以下实现中,连接URL(产品详细信息URL)是
http
,而不是
https
。我正在使用
Volley
库进行网络连接

DetailActivity.java

private void productDetailInit() {
      // it is http
        StringRequest postRequest = new StringRequest(Request.Method.POST, Config.PRODUCT_DETAIL_URL,
                new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                            try {
                                jsonObject = response;
                                loadJsonData();
                            } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        error.printStackTrace();
                    }
                }
            ) {
            @Override
            protected Map<String, String> getParams() {
                Map<String, String> params = new HashMap<>();
                params.put("id", productID);
                return params;
            }
        };

        RetryPolicy policy = new DefaultRetryPolicy(1000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
        postRequest.setRetryPolicy(policy);
        CustomVolleyRequest.getInstance(this).getRequestQueue().add(postRequest);
    }
private void productDetailInit(){
//它是http
StringRequest postRequest=新的StringRequest(Request.Method.POST,Config.PRODUCT\u DETAIL\u URL,
新的Response.Listener(){
@凌驾
公共void onResponse(字符串响应){
试一试{
jsonObject=响应;
loadJsonData();
}捕获(例外e){
e、 printStackTrace();
}
}
},
新的Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
错误。printStackTrace();
}
}
) {
@凌驾
受保护的映射getParams(){
Map params=新的HashMap();
参数put(“id”,productID);
返回参数;
}
};
RetryPolicy policy=新的DefaultRetryPolicy(1000,DefaultRetryPolicy.DEFAULT\u MAX\u RETRIES,DefaultRetryPolicy.DEFAULT\u BACKOFF\u MULT);
postRequest.setRetryPolicy(策略);
CustomVolleyRequest.getInstance(this).getRequestQueue().add(postRequest);
}
CustomVolleyRequest.java

public class CustomVolleyRequest {

private static CustomVolleyRequest customVolleyRequest;
private static Context context;
private RequestQueue requestQueue;
private ImageLoader imageLoader;

private CustomVolleyRequest(Context context) {
    this.context = context;
    this.requestQueue = getRequestQueue();

    imageLoader = new ImageLoader(requestQueue,
            new ImageLoader.ImageCache() {
                private final LruCache<String, Bitmap>
                        cache = new LruCache<String, Bitmap>(20);

                @Override
                public Bitmap getBitmap(String url) {
                    return cache.get(url);
                }

                @Override
                public void putBitmap(String url, Bitmap bitmap) {
                    cache.put(url, bitmap);
                }
            });
}

private class BitmapCache implements ImageLoader.ImageCache {

    private LruCache<String, Bitmap> mCache;

    public BitmapCache() {
        mCache = new LruCache<>(20);
    }

    @Override
    public Bitmap getBitmap(String url) {
        return mCache.get(url);
    }

    @Override
    public void putBitmap(String url, Bitmap bitmap) {
        // scaling bitmap for avoiding too much big images
        Bitmap scaled = ImageUtil.getInstance().scaleBitmap(bitmap);
        mCache.put(url, scaled);
    }
}

public static synchronized CustomVolleyRequest getInstance(Context context) {
    if (customVolleyRequest == null) {
        customVolleyRequest = new CustomVolleyRequest(context);
    }
    return customVolleyRequest;
}

public RequestQueue getRequestQueue() {
    if (requestQueue == null) {
        Cache cache = new DiskBasedCache(context.getCacheDir(), 10 * 1024 * 1024);
        Network network = new BasicNetwork(new HurlStack());
        requestQueue = new RequestQueue(cache, network);
        requestQueue.start();
    }
    return requestQueue;
}

 public ImageLoader getImageLoader() {
    return imageLoader;
 }

}
 class ProductMainAdapter extends ArrayAdapter<ImageRecord> {
    private ImageLoader mImageLoader;
    private String jsonObject;

    ProductMainAdapter(Context context) {
        super(context, R.layout.grid_item);
        mImageLoader = CustomVolleyRequest.getInstance(this.getContext()).getImageLoader();
    }

    @NonNull
    @Override
    public View getView(final int position, View convertView, @NonNull ViewGroup parent) {
        final ViewHolder holder;
        if(convertView == null) {
            holder = new ViewHolder();
            convertView = LayoutInflater.from(getContext()).inflate(R.layout.grid_item, parent, false);
            convertView.setBackgroundResource(R.drawable.round_gridview);
            holder.priceTagImage = (ImageView) convertView.findViewById(R.id.priceTag_IV);
            holder.textView = (TextView) convertView.findViewById(R.id.text);
            holder.imageView = (NetworkImageView) convertView.findViewById(R.id.picture);
            holder.priceTagRL = (RelativeLayout) convertView.findViewById(R.id.priceTag_RL);
            convertView.setTag(holder);
        }
        else {
            holder = (ViewHolder) convertView.getTag();
        }
        ImageRecord imageRecord = getItem(position);
        holder.imageView.setImageUrl(imageRecord != null ? imageRecord.getUrl() : null, mImageLoader);
        holder.imageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                openProductDetail(position);
            }
        });
        holder.textView.setText(imageRecord != null ? imageRecord.getTitle() : null);
        holder.priceTagRL.setRotation(0);

        return convertView;
    }

    private class ViewHolder{
        TextView textView;
        ImageView priceTagImage;
        NetworkImageView imageView;
        RelativeLayout priceTagRL;
    }

    private void openProductDetail(int position) {
        try {
            ImageRecord imr = getItem(position);
            String productID = imr != null ? imr.getId() : "0";
            Intent intent = new Intent(getContext(), ProductDetailActivity.class);
             intent.putExtra("pid", productID);
             getContext().startActivity(intent);    
        } catch (Exception e) {
            Log.e("openProductDetail", "exception", e);
        }
    }
公共类CustomVolleyRequest{
私有静态CustomVolleyRequest CustomVolleyRequest;
私有静态语境;
私有请求队列请求队列;
私有图像加载器;
私有CustomVolleyRequest(上下文){
this.context=上下文;
this.requestQueue=getRequestQueue();
imageLoader=新的imageLoader(请求队列,
新建ImageLoader.ImageCache(){
私人决赛
缓存=新的LruCache(20);
@凌驾
公共位图getBitmap(字符串url){
返回cache.get(url);
}
@凌驾
公共位图(字符串url、位图){
cache.put(url、位图);
}
});
}
私有类BitmapCache实现ImageLoader.ImageCache{
私人LruCache-mCache;
公共位图缓存(){
mCache=新的LruCache(20);
}
@凌驾
公共位图getBitmap(字符串url){
返回mCache.get(url);
}
@凌驾
公共位图(字符串url、位图){
//缩放位图以避免过多的大图像
位图缩放=ImageUtil.getInstance().scaleBitmap(位图);
mCache.put(url,缩放);
}
}
公共静态同步CustomVolleyRequest getInstance(上下文){
if(customVolleyRequest==null){
customVolleyRequest=新customVolleyRequest(上下文);
}
返回客户截击请求;
}
公共请求队列getRequestQueue(){
if(requestQueue==null){
Cache Cache=new DiskBasedCache(context.getCacheDir(),10*1024*1024);
网络=新的基本网络(new HurlStack());
requestQueue=新的requestQueue(缓存、网络);
requestQueue.start();
}
返回请求队列;
}
公共ImageLoader getImageLoader(){
返回图像加载器;
}
}
Adapter.java

public class CustomVolleyRequest {

private static CustomVolleyRequest customVolleyRequest;
private static Context context;
private RequestQueue requestQueue;
private ImageLoader imageLoader;

private CustomVolleyRequest(Context context) {
    this.context = context;
    this.requestQueue = getRequestQueue();

    imageLoader = new ImageLoader(requestQueue,
            new ImageLoader.ImageCache() {
                private final LruCache<String, Bitmap>
                        cache = new LruCache<String, Bitmap>(20);

                @Override
                public Bitmap getBitmap(String url) {
                    return cache.get(url);
                }

                @Override
                public void putBitmap(String url, Bitmap bitmap) {
                    cache.put(url, bitmap);
                }
            });
}

private class BitmapCache implements ImageLoader.ImageCache {

    private LruCache<String, Bitmap> mCache;

    public BitmapCache() {
        mCache = new LruCache<>(20);
    }

    @Override
    public Bitmap getBitmap(String url) {
        return mCache.get(url);
    }

    @Override
    public void putBitmap(String url, Bitmap bitmap) {
        // scaling bitmap for avoiding too much big images
        Bitmap scaled = ImageUtil.getInstance().scaleBitmap(bitmap);
        mCache.put(url, scaled);
    }
}

public static synchronized CustomVolleyRequest getInstance(Context context) {
    if (customVolleyRequest == null) {
        customVolleyRequest = new CustomVolleyRequest(context);
    }
    return customVolleyRequest;
}

public RequestQueue getRequestQueue() {
    if (requestQueue == null) {
        Cache cache = new DiskBasedCache(context.getCacheDir(), 10 * 1024 * 1024);
        Network network = new BasicNetwork(new HurlStack());
        requestQueue = new RequestQueue(cache, network);
        requestQueue.start();
    }
    return requestQueue;
}

 public ImageLoader getImageLoader() {
    return imageLoader;
 }

}
 class ProductMainAdapter extends ArrayAdapter<ImageRecord> {
    private ImageLoader mImageLoader;
    private String jsonObject;

    ProductMainAdapter(Context context) {
        super(context, R.layout.grid_item);
        mImageLoader = CustomVolleyRequest.getInstance(this.getContext()).getImageLoader();
    }

    @NonNull
    @Override
    public View getView(final int position, View convertView, @NonNull ViewGroup parent) {
        final ViewHolder holder;
        if(convertView == null) {
            holder = new ViewHolder();
            convertView = LayoutInflater.from(getContext()).inflate(R.layout.grid_item, parent, false);
            convertView.setBackgroundResource(R.drawable.round_gridview);
            holder.priceTagImage = (ImageView) convertView.findViewById(R.id.priceTag_IV);
            holder.textView = (TextView) convertView.findViewById(R.id.text);
            holder.imageView = (NetworkImageView) convertView.findViewById(R.id.picture);
            holder.priceTagRL = (RelativeLayout) convertView.findViewById(R.id.priceTag_RL);
            convertView.setTag(holder);
        }
        else {
            holder = (ViewHolder) convertView.getTag();
        }
        ImageRecord imageRecord = getItem(position);
        holder.imageView.setImageUrl(imageRecord != null ? imageRecord.getUrl() : null, mImageLoader);
        holder.imageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                openProductDetail(position);
            }
        });
        holder.textView.setText(imageRecord != null ? imageRecord.getTitle() : null);
        holder.priceTagRL.setRotation(0);

        return convertView;
    }

    private class ViewHolder{
        TextView textView;
        ImageView priceTagImage;
        NetworkImageView imageView;
        RelativeLayout priceTagRL;
    }

    private void openProductDetail(int position) {
        try {
            ImageRecord imr = getItem(position);
            String productID = imr != null ? imr.getId() : "0";
            Intent intent = new Intent(getContext(), ProductDetailActivity.class);
             intent.putExtra("pid", productID);
             getContext().startActivity(intent);    
        } catch (Exception e) {
            Log.e("openProductDetail", "exception", e);
        }
    }
class ProductMainAdapter扩展了ArrayAdapter{
私有图像加载器;
私有字符串jsonObject;
ProductMainAdapter(上下文){
超级(上下文、右布局、网格项);
mImageLoader=CustomVolleyRequest.getInstance(this.getContext()).getImageLoader();
}
@非空
@凌驾
公共视图getView(最终整型位置,视图转换视图,@NonNull视图组父级){
最终持票人;
if(convertView==null){
holder=新的ViewHolder();
convertView=LayoutInflater.from(getContext()).flate(R.layout.grid_项,父项,false);
convertView.setBackgroundResource(R.drawable.round_gridview);
holder.priceTagImage=(ImageView)convertView.findViewById(R.id.priceTag_IV);
holder.textView=(textView)convertView.findViewById(R.id.text);
holder.imageView=(NetworkImageView)convertView.findViewById(R.id.picture);
holder.priceTagRL=(RelativeLayout)convertView.findViewById(R.id.priceTag_RL);
convertView.setTag(支架);
}
否则{
holder=(ViewHolder)convertView.getTag();
}
ImageRecord ImageRecord=getItem(位置);
holder.imageView.setImag