Articles of android volley

优化排球

我正在使用Google IO 2013中引入的Volley。我在浏览器中运行相同的URL,并在不到一秒的时间内返回。 我想知道如何优化Volley。 不清楚Cache Queue Take代表什么,为什么是3.6秒。 或为什么需要caching队列和networking完成的响应时间是6.8秒? 我应该如何优化不使用ETags的服务。 什么是BasicNetwork.logSlowRequests? 谢谢 07-26 09:52:31.395: D/Volley(5651): [4378] BasicNetwork.logSlowRequests: HTTP response for request=<[ ] http://theurl.com/path 0xd6183ced NORMAL 6> [lifetime=3172], [size=940], [rc=200], [retryCount=0] 07-26 09:52:31.400: D/Volley(5651): [4377] BasicNetwork.logSlowRequests: HTTP response for request=<[ ] http://theurl.com/path 0xd6183ced NORMAL 5> [lifetime=3182], [size=940], [rc=200], [retryCount=0] 07-26 09:52:31.445: D/Volley(5651): [1] MarkerLog.finish: (6848 ms) [ […]

在Volley中将authentication头添加到NetworkImageView

我使用Volley和NetworkImageView。 这对于几个项目来说非常有效。 不过,我现在需要在标题中为我的图片请求发送身份validation令牌。 做这个的最好方式是什么? 在我的正常请求中,我重写getHeaders()并以这种方式放置我的令牌。 但是NetworkImageView使用的ImageLoader会生成一个通用的请求,从而很难添加标题。

getInstance(this)添加ImageLoader时出现Android Volley错误

我正在使用Volley在Android开发人员跟踪图像兑现教程 ,我有问题请求图像请求并caching它,我猜是因为我创build的singelton(从教程复制)。 我的Eclipse在getInstance(this)给出错误,因为这是上下文,我正在请求一个图像,我猜。 ImageRequest request = new ImageRequest( url, new Response.Listener<Bitmap>() { @Override public void onResponse(Bitmap bitmap) { mNetworkImageView = (NetworkImageView) findViewById(R.id.ImageView); mImageLoader = MySingleton.getInstance(this).getImageLoader(); mNetworkImageView.setImageUrl(IMAGE_URL, mImageLoader); // mImageLoader = MySingleton.getInstance(this).getImageLoader(); // mImageLoader.get(IMAGE_URL, ImageLoader.getImageListener(mImageView, // R.drawable.ic_launcher, R.drawable.ic_launcher)); } }, 0, 0, null, new Response.ErrorListener() { public void onErrorResponse(VolleyError error) { // mImageView.setImageResource(R.drawable.ic_launcher); } }); MySingleton.getInstance(this).addToRequestQueue(request); […]

Android Studio + Volley = NoClassDefFound?

那么,我决定同时尝试一下Android的Volleynetworking库和新的Android Studio IDE。但是,我遇到了一些问题。 我build立了volley.jar,将它复制到了我的libs文件夹中,用于一个新的项目,编辑了build.gradle以包含volley,并在我的主要活动中设置了一个静态的ImageLoader和RequestQueue。 但是,当我将应用程序加载到模拟器(4.2)时,我最终得到了 E / AndroidRuntime:致命例外:主 java.lang.NoClassDefFoundError:com.android.volley.toolbox.Volley 当调用Volley时如下: 队列= Volley.newRequestQueue(this); Gradle编辑支持库: 依赖{ 编译文件('libs / android-support-v4.jar') 编译文件('libs / volley.jar') } 任何人都指着我正确的方向?

排除NetworkImageView清除caching的图像

有没有人知道是否有可能使用Google Googles Volley库从单个NetworkImageView中清除caching的图像? 我有一个NetworkImageView中的头像图像,并希望显示新的图像,一旦我已经上传到服务器。 此刻如果我做profileImg.setImageUrl("myUrl", mImageLoader); 我得到caching的图像。

我应该担心内存泄漏,并在Android中使用Volley的WeakReference

读完这篇文章之后 ,我开始考虑使用Volley的内存泄漏问题。 通常,使用Volley实现的监听器对外部类(活动)有一个隐式或显式的引用。 例如: JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { updateLayout(); } } 在这种情况下,有一个隐式引用…或者我可能想要创build一个自定义的JsonObjectRequest来内部化响应处理,并需要在其构造函数中传入对调用活动的引用。 现在让我们说我开始一个Web请求,但在响应回来之前,我离开开始请求的活动。 从我所了解的JsonObjectRequest对象将保持对我的活动的参考,并防止它被垃圾收集。 – 我正确地理解这个,这是一个合理的恐惧吗? Volley图书馆自动处理这个? – 如果是创build一个自定义的JsonObjectRequest并传入“this”(引用activity),是否需要为该活动创build一个WeakReference?

Android(Java)HttpURLConnection在'读取'超时时间进行无声重试

所以我使用Google Volley进行HTTP请求,它基本上使用Java的HttpURLConnection 。 根据我的testing, 问题是这样的 : 当HttpURLConnection上的'read'超时到达时,在连接closures之前执行无提示重试,并抛出相关的exception( SocketTimeoutException )。 请注意 : – 当使用HTTP POST请求时,我注意到了这个错误。 – “读取”超时与“连接”超时不同。 – 如果'read'超时(通过调用connection.setReadTimeout(int)设置)未设置(0),或者设置为比connection.setConnectTimeout(int)更大的值,则不会发生此错误。 – 这个问题已经在这里讨论过了,但是我还没有find任何令人满意的解决scheme。 – 这里可以find一个相关的问题,但我不确定它是否相关(是吗?) 更多的背景 我的应用程序用于付款,所以不要重试请求是至关重要的(是的,我知道它可以由服务器处理,我希望我的客户端是“正确的”无论如何)。 当设置“读取”超时时,如果服务器连接build立,但是服务器在应答之前等待/睡眠/延迟 – 响应(超时)时间(从而引起“读取”exception而不是“连接”exception) ,在引发exception之前发送另一个(静默)请求,导致2个类似的请求,这是不可接受的。 我在寻找什么样的解决scheme? 那么,一个将很好地解决这个问题/错误,就像这里解释的修复(但我再次,我认为这是无关紧要的)。 此外,我想保持原来的stream程,这意味着不要强迫连接closures或类似的东西。 我现在要做的是将'read'超时设置为连接超时的两倍(它们同时开始计数),以确保首先引发“连接”exception。 我也会尝试在服务器端克服这个问题。 问题是,这个“读”超时是有原因的,我目前的实现几乎忽略它,只处理“连接”超时。 编辑 RetryPolicy库的RetryPolicy没有影响这个问题,因为这是一个沉默的重试。 我在图书馆里面看得很深。 logging/断点到处,取消呼叫重试。 那我怎么知道这是一个99.99%的HttpURLConnection问题。

Android系统。 乱射。 volleyError.networkResponse为null

我正在使用Volley调用Web服务所以…我正在进行这个调用: POST /api/user/login HTTP/1.1 Content-Type: application/json User-Agent: Dalvik/1.6.0 (Linux; U; Android 4.2.2; Samsung Galaxy S3 – 4.2.2 – API 17 – 720×1280 Build/JDQ39E) Host: /*No need to show this here.*/ Connection: Keep-Alive Accept-Encoding: gzip Content-Length: 43 {"password":"sg","email":"string1@str.com"} 我得到这个响应(注意401错误): HTTP/1.1 401 Unauthorized Server: nginx/1.6.3 Date: Thu, 06 Aug 2015 17:39:15 GMT Content-Type: application/json; charset=utf-8 Transfer-Encoding: chunked […]

BasicNetwork.performRequest:用于http://localhost/database/login.php的意外响应代码403

我使用Volley连接到MySql数据库。 我创build了数据库表并编写了php函数,下面是java代码。 所有这一切都一直工作,但就在昨天它醒来在logcat中给这个错误,并没有返回任何响应,testingPHP脚本使用谷歌铬邮差工程就好了,所以即时通讯认为有错误,在我的Java代码。 BasicNetwork.performRequest: http://192.168.43.71/database/login.php意外的响应代码403 我知道这样的几个问题之前已经被问过了,我已经完成了所有的事情,似乎什么都不起作用。 我疯了。 private void login() { StringRequest jsonObjRequest = new StringRequest(Method.POST, Constants.ACCOUNTLOGIN, loginSuccessListener(), loginErrorListener()) { protected Map<String, String> getParams() throws com.android.volley.AuthFailureError { Map<String, String> params = new HashMap<String, String>(); params.put("user_phone_number", sPhoneNumber); params.put("user_password", sPassword); return params; }; }; mVolleyQueue.add(jsonObjRequest); }

Android与Gradle(Java完成非零退出值2)

这是我的.gradle文件: apply plugin: 'com.android.application' android { compileSdkVersion 21 buildToolsVersion "21.1.2" defaultConfig { applicationId "com.test.test" minSdkVersion 15 targetSdkVersion 21 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } packagingOptions { exclude 'META-INF/license.txt' exclude 'META-INF/LICENSE' exclude 'META-INF/notice.txt' exclude 'META-INF/NOTICE' } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:21.0.3' […]