我们正在构建一个应用程序,可以执行大量动画并下载大量图像.在一定数量的事务(可预测的数字)之后,应用程序崩溃并出现错误:
A/Looper: Could not create wake pipe. errno=24
Run Code Online (Sandbox Code Playgroud)
我们在代码中不使用Looper,但我们使用的一些库确实使用了Looper:
有没有任何机构经历过任何这些库的Looper错误,并知道如何解决?
我试图从我的发布数据发送到我的服务器的图像从android.为了实现这一点,我将64位编码的我的图像编码为字符串并使用android volley库发送它.但这会引起问题.由于某种原因,它有时会发送两次帖子,我无法弄清楚原因.下面是调用发送post请求的函数.我在那里放了一个破记标记,String url = "http://domain.com/ajax_ws.php";然后在protected Map<String, String> getParams() {我发现的String url = ...内容中只有一个被调用一次但是当它发送两个时,它protected Map...被调用两次.我在android排球上找不到任何文档,所以我不知道为什么会这样.调整位图大小,使图像字符串始终保持在100k到200k字符之间.我想也许这是一个大小问题,但我的服务器正在接收图像并解码它们,一切都很好.
public void Sharing() {
pd = ProgressDialog.show(getParent(), null, "Please Wait...");
final String caption = mEtMessage.getText().toString();
RequestQueue queue = Volley.newRequestQueue(this);
String url = "http://domain.com/ajax_ws.php";
StringRequest postRequest = new StringRequest(
Request.Method.POST,
url,
new MyStringListener(),
new MyErrorListener()
) {
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<String, String>();
params.put("token", "secretToken");
params.put("mode", "createVoucher");
params.put("user_id", ActivityLogin.id);
params.put("deal_id", ActivitySharing.id_deal);
params.put("user_id_company", ActivityRestaurantDetails.res.getId()); …Run Code Online (Sandbox Code Playgroud) 使用Volley处理大型响应时会发生一些不好的事情:
String url = AppHelper.DOMAIN + "/service/pages/profile_update.json";
this.infoTextView.setText(getString(R.string.profile_info_updating));
final StringRequest stringRequest = new StringRequest(Request.Method.POST, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject json = new JSONObject(response);
if (json.getBoolean("success")) {
// manage JSON object here
} else {
Toast.makeText(ProfileActivity.this,
getString(R.string.connection_problem_server),
Toast.LENGTH_LONG).show();
}
} catch (JSONException e) {
ProfileActivity.this.infoTextView.setText(
getString(R.string.profile_info_updating_error));
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
ProfileActivity.this.infoTextView.setText(
getString(R.string.profile_info_updating_error));
if (error.networkResponse != null && error.networkResponse.statusCode == 401) {
Toast.makeText(ProfileActivity.this,
getString(R.string.connection_problem_permission),
Toast.LENGTH_LONG).show(); …Run Code Online (Sandbox Code Playgroud) 我正在使用volley进行json解析.我想使用POST向服务器端发送一些数据.我想发送.现在任何人都可以告诉我如何将过滤器阵列发送到服务器?
以下是我的代码段.我也尝试Hashmap和Jsonobject.但得到这个错误.
错误:
org.json.JSONException: Value at Data of type java.lang.String cannot be converted to JSONObject
Run Code Online (Sandbox Code Playgroud)
格式
{
"typeName": "MANUFACTURER",
"typeId": 22,
"cityId": 308,
"sortBy": "productname",
"sortOrder": "desc",
"filter":[
{
"filterId":101,
"typeName":"CAT_ID",
"filterId":102,
"typeName":"CAT_ID"
}
]
}
Run Code Online (Sandbox Code Playgroud)
对于Code Check pastie
我对Volley有点不确定的是RequestQueue,ImageLoader对象和ImageLoader.ImageCache实现.
在我遇到的示例中,它们是在onCreate()中实例化的,但是为每个活动创建一个新的请求队列似乎没有意义.我也有大量的活动和服务,我将在任何地方使用它.如果我真的必须在每个服务或活动中实例化它们,它们有多贵?
生产应用程序用于实例化和访问这些对象的最佳实践是什么?
我一直试图弄清楚这个问题两天了,而且我完全难以理解.出于某种原因,我正在向队列发送一个请求,但是volley返回两次,这是两次调用侦听器并在listview中将结果加倍.我打开了Volley的日志记录,我可以看到请求被添加到队列并返回,然后几秒钟后也会返回相同的请求.记录下面
V/Volley(14666): [188] CacheDispatcher.run: start new dispatcher
11-15 12:29:30.152: V/Volley(14666): [1] RequestQueue.add: Request for cacheKey=http://reallylongurl is in flight, putting on hold.
11-15 12:29:39.722: V/Volley(14666): [1] RequestQueue.finish: Releasing 1 waiting requests for cacheKey=http://reallylongurl.
11-15 12:29:39.722: D/Volley(14666): [1] MarkerLog.finish: (9809 ms) [ ] http://reallylongurl 0xd68d6603 NORMAL 1
11-15 12:29:39.732: D/Volley(14666): [1] MarkerLog.finish: (+0 ) [ 1] add-to-queue
11-15 12:29:39.732: D/Volley(14666): [1] MarkerLog.finish: (+2169) [188] cache-queue-take
11-15 12:29:39.742: D/Volley(14666): [1] MarkerLog.finish: (+37 ) [188] cache-hit
11-15 12:29:39.742: D/Volley(14666): [1] MarkerLog.finish: (+6878) [188] cache-hit-parsed …Run Code Online (Sandbox Code Playgroud) 我是Volley和Android的新手.下面是我正在尝试执行的代码片段(Android使用Volley),但它是服务器返回400.使用另一个REST客户端完美地工作.这是使用PUT方法向服务器发出的请求.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
sendRequest();
}
private void sendRequest() {
RequestQueue queue = Volley.newRequestQueue(this);
final JSONObject jsonObject = new JSONObject();
try {
jsonObject.put("password", "ttttt");
jsonObject.put("username", "tester3");
jsonObject.put("token", "blah");
} catch (JSONException e) {
// handle exception
}
JsonObjectRequest putRequest = new JsonObjectRequest(Request.Method.PUT, url, jsonObject,
new Response.Listener<JSONObject>()
{
@Override
public void onResponse(JSONObject response) {
// response
Log.d("Response", response.toString());
}
},
new Response.ErrorListener()
{
@Override
public void onErrorResponse(VolleyError error) {
// error
Log.d("Error.Response", error.toString());
}
}
) …Run Code Online (Sandbox Code Playgroud) 我一直在监视我的应用程序错误,我看到以下错误太多次了
javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0xb8f0fc28: Failure in SSL library, usually a protocol error
Run Code Online (Sandbox Code Playgroud)
错误:14077410:SSL例程:SSL23_GET_SERVER_HELLO:sslv3警报握手失败(外部/ openssl/ssl/s23_clnt.c:741 0xaa48cd5c:0x00000000)-javax.net.ssl.SSLHandshakeException:javax.net.ssl.SSLProtocolException:SSL握手已中止: ssl = 0xb8f0fc28:SSL库失败,通常是协议错误错误:14077410:SSL例程:SSL23_GET_SERVER_HELLO:sslv3警报握手失败(外部/ openssl/ssl/s23_clnt.c:741 0xaa48cd5c:0x00000000)
您可以看到错误是关于SSLV3而我的服务器仅支持TLSV1.2.
看起来在某些客户端,Volley回归使用SSLV3(出于某种原因)并且他们收到错误.
收到此错误的用户在Android 4.4.2,4.4.4和4.1.1及更高版本上.
有趣的是,我也在同一个应用程序中使用DefaultHttpClient,但它似乎没有报告相同的问题.
我在Volley中使用默认的HurlStack
我已经看到以下内容... 在HttpsURLConnection中禁用SSL作为协议
和 https://code.google.com/p/android/issues/detail?id=78187
那么我的选择是什么?
我的假设是否正确,Volley会回归到SSLV3?
为什么凌空倒退到SSLV3?换句话说,导致回退的原始失败是什么以及如何解决?
我最近下载了Volley,但我不确定它是最新的.我如何找到我的版本?
有什么想法吗?
我在Android开发人员上使用Volley跟踪图像兑现教程,我遇到了请求图像请求并缓存它的问题,我想因为我创建的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);
Run Code Online (Sandbox Code Playgroud)
这是单身人士:
package com.example.p;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.ImageLoader;
import com.android.volley.toolbox.Volley;
import android.content.Context;
import android.graphics.Bitmap;
import android.support.v4.util.LruCache;
public class MySingleton …Run Code Online (Sandbox Code Playgroud) 我Volley在我的项目中用于处理网络请求.这是JSON我的服务器返回的示例
JSON对象响应
{"code":"success", "data":{"some data"}}
Run Code Online (Sandbox Code Playgroud)
JSON数组响应
{"code":"success", "data":["some data"]}
Run Code Online (Sandbox Code Playgroud)
发生某些验证错误或任何其他错误时,服务器返回以下响应:
{"code":"failed", "error":"Access denied"}
Run Code Online (Sandbox Code Playgroud)
问题在于解析数据.当请求成功onResponse时ResponseListener,我只需获取data密钥的内容.在哪里,我期待的结果与我上面发布的相同.我不知道为什么Volley只返回内容data而不是完整内容JSON.我Volley之前也用过.但从未遇到过这类问题.
解析代码:
private void getOnboardingCategories() {
Response.Listener<JSONArray> responseListener = new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
Log.d(LOG_TAG, "CATEGORY RESPONSE: " + response.toString());
if (response != null) {
int dataLength = response.length();
for (int i = 0; i < dataLength; i++) {
JSONObject jObject = response.optJSONObject(i);
if (jObject …Run Code Online (Sandbox Code Playgroud)