- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个使用 volley 库从 PHP 服务器同步数据的应用程序。我正在接收来自 php 的 json
数组响应。当响应很少时,它工作得很好。但是当 json
非常大时就会出现问题。我正在使用 xaamp 进行同步。加载数据花费了太多时间。有时根本得不到任何数据。我正在准备来自 json
php 数组的语句,并将其添加到简单数组列表中。
我收到 logcat 错误:
36.713ms
W/art: Suspending all threads took: 7.657ms
I/art: Waiting for a blocking GC Alloc
W/art: Suspending all threads took: 85.126ms
W/art: Suspending all threads took: 40.203ms
I/art: Background partial concurrent mark sweep GC freed 541(18KB) AllocSpace objects, 33(130MB) LOS objects, 11% free, 123MB/139MB, paused 42.528ms total 557.827ms
I/art: WaitForGcToComplete blocked for 328.549ms for cause Alloc
I/art: Starting a blocking GC Alloc
W/art: Suspending all threads took: 5.369ms
I/art: Background sticky concurrent mark sweep GC freed 105(3KB) AllocSpace objects, 3(11MB) LOS objects, 0% free, 142MB/142MB, paused 7.807ms total 52.573ms
W/art: Suspending all threads took: 5.261ms
W/art: Suspending all threads took: 294.041ms
W/art: Suspending all threads took: 38.308ms
I/art: Background partial concurrent mark sweep GC freed 388(13KB) AllocSpace objects, 26(103MB) LOS objects, 10% free, 133MB/149MB, paused 40.009ms total 515.759ms
W/art: Suspending all threads took: 5.063ms
I/art: Background sticky concurrent mark sweep GC freed 157(5KB) AllocSpace objects, 3(11MB) LOS objects, 0% free, 150MB/150MB, paused 7.052ms total 34.742ms
I/art: Waiting for a blocking GC Alloc
W/art: Suspending all threads took: 129.556ms
I/art: Background partial concurrent mark sweep GC freed 494(16KB) AllocSpace objects, 36(142MB) LOS objects, 12% free, 110MB/126MB, paused 1.517ms total 672.880ms
I/art: WaitForGcToComplete blocked for 485.833ms for cause Alloc
I/art: Starting a blocking GC Alloc
W/art: Suspending all threads took: 13.120ms
I/art: Background sticky concurrent mark sweep GC freed 104(3KB) AllocSpace objects, 0(0B) LOS objects, 0% free, 138MB/138MB, paused 16.321ms total 38.525ms
W/art: Suspending all threads took: 9.983ms
W/art: Suspending all threads took: 285.230ms
W/art: Suspending all threads took: 38.702ms
I/art: Background partial concurrent mark sweep GC freed 435(14KB) AllocSpace objects, 27(106MB) LOS objects, 11% free, 127MB/143MB, paused 40.305ms total 493.740ms
W/art: Suspending all threads took: 5.107ms
I/art: Background sticky concurrent mark sweep GC freed 156(5KB) AllocSpace objects, 3(11MB) LOS objects, 0% free, 145MB/145MB, paused 6.856ms total 25.414ms
W/art: Suspending all threads took: 413.504ms
W/art: Suspending all threads took: 56.440ms
I/art: Background partial concurrent mark sweep GC freed 14(464B) AllocSpace objects, 9(35MB) LOS objects, 12% free, 115MB/131MB, paused 59.022ms total 496.519ms
I/art: Background sticky concurrent mark sweep GC freed 154(5KB) AllocSpace objects, 3(11MB) LOS objects, 0% free, 133MB/133MB, paused 5.741ms total 23.296ms
I/art: Waiting for a blocking GC Alloc
W/art: Suspending all threads took: 96.541ms
W/art: Suspending all threads took: 43.589ms
I/art: Background partial concurrent mark sweep GC freed 548(18KB) AllocSpace objects, 33(130MB) LOS objects, 11% free, 122MB/138MB, paused 45.755ms total 511.247ms
I/art: WaitForGcToComplete blocked for 332.277ms for cause Alloc
I/art: Starting a blocking GC Alloc
W/art: Suspending all threads took: 12.093ms
I/art: Background sticky concurrent mark sweep GC freed 104(3KB) AllocSpace objects, 0(0B) LOS objects, 0% free, 150MB/150MB, paused 15.972ms total 51.520ms
W/art: Suspending all threads took: 7.796ms
我的 json 数组如下链接所示。 http://www.ktronsystem.com/data.json
我的安卓代码是
public void m461async(){
if (!(co.loggedInUserUniqid == "")) {
jdialog= new ProgressDialog(all.this);
jdialog.setMessage("m462 Please wait..We are processing your request.");
jdialog.setIndeterminate(false);
jdialog.setCancelable(false);
jdialog.show();
final Cursor mall = co.data_db.rawQuery("select * from mall", null);
mall.moveToFirst();
final int mrows = mall.getCount();
System.out.print(mrows+" ababababababababqa" );
for (int idx = 0; idx < mrows; idx++) {
System.out.print("loop of m462 55555555555555555555555");
mall.moveToPosition(idx);
mtempidx = idx;
final String mfilename = f1.getCol(mall, "filename").toLowerCase().trim();
String mfilepath = co.getDataPath(cn) + "/";
final String mfilefullname = mfilepath + mfilename;
if (new File(mfilefullname).exists()) {
StringRequest stringRequest= new StringRequest(Request.Method.POST, murl + "getonlinem461data.php",
new Response.Listener<String>() {
@Override
public void onResponse(final String response) {
mjay = mjay + 1;
System.out.println(mjay+ " m461111111111111111"+response);
class m461prepare extends AsyncTask<String, String, Integer> {
@Override
protected Integer doInBackground(String... params) {
msuccess=1;
System.out.println(mjay+" m46211111111111111"+response);
final String mquery="insert into m462 (accode,book,date,vno1,vno2,vno3,part,tot_debit,tot_credit,balance,cl_type,m462index) values ";
String mquery2="";
try {
System.out.print("zzzzzzzzzzzzzzzzzzzzzzzzzzz");
final SQLiteDatabase mdb1 =SQLiteDatabase.openDatabase(co.getDataPath(cn)+"/"+mfilename, null, SQLiteDatabase.OPEN_READWRITE);
mdb1.execSQL("delete from m462");
mdb1.close();
JSONArray arr = new JSONArray(response);
final ContentValues insertValues = new ContentValues();
System.out.print("xxxxxxxxxxxxxxxxxxxxxx");
if (arr.isNull(0)==false) {
System.out.print("ccccccccccccccccccccccccc");
for (int i = 0; i < arr.length(); i++) {
final JSONObject obj = (JSONObject) arr.get(i);
final String maccode = obj.get("maccode").toString();
final String mbook = obj.get("mbook").toString();
final String mdate = obj.get("mdate").toString();
final String mvno1 = obj.get("mvno1").toString();
final String mvno2 = obj.get("mvno2").toString();
final String mvno3 = obj.get("mvno3").toString();
final String mpart = obj.get("mpart").toString();
final String mtot_debit = obj.get("mtot_debit").toString();
final String mtot_credit = obj.get("mtot_credit").toString();
final String mbalance = obj.get("mbalance").toString();
final String mcl_type = obj.get("mcl_type").toString();
final String mm462index = obj.get("mm462index").toString();
mquery2 = mquery2
+ "('" + f1.abc(maccode) + "'," +
"'" + mbook + "'," +
"'" + mdate + "'," +
"'" + mvno1 + "'," +
"'" + mvno2 + "'," +
"'" + mvno3 + "'," +
"'" + mpart + "'," +
"'" + mtot_debit + "'," +
"'" + mtot_credit + "'," +
"'" + mbalance + "'," +
"'" + mcl_type + "'," +
"'" + mm462index + "'),";
}
System.out.print("vvvvvvvvvvvvvvvvvvvvvvv");
String mfinalquery = (mquery.trim() + mquery2.trim());
mfinalquery = mfinalquery.substring(0, mfinalquery.length() - 1);
ArrayQuery.add(mfinalquery);
ArrayFilename.add(mfilefullname);
}
} catch (JSONException e) {
e.printStackTrace();
}
System.out.print("bbbbbbbbbbbbbbbbbbbbbbb");
return 0;
}
@Override
protected void onPostExecute(Integer a){
System.out.print("nnnnnnnnnnnnnnnnnnnnnnnnnnnn");
if (mall.isLast()) {
System.out.println("333333333333");
jdialog.dismiss();
// trasync();
}
}
}
new m461prepare().execute();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
merror=1;
jdialog.dismiss();
f1.wait_wind("Please check your internet connection", cn);
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<>();
params.put("uniqid_guid", co.loggedInUserUniqid);
params.put("filename", mfilename);
return params;
}
};
stringRequest.setRetryPolicy(new DefaultRetryPolicy(999999999, -1, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
AppController.getInstance().addToRequestQueue(stringRequest,"m462_req");
}
}
mall.close();
}
else{
f1.wait_wind("Please login first !",cn);
}
}
提前致谢。
最佳答案
如果文件的长度很大,你应该在后台运行这个方法。试试这段代码:
@Override
public void onResponse(String response) {
new Thread(new Runnable() {
@Override
public void run() {
JSONArray arr = new JSONArray(response);
int len = arr.length();
for (int i = 0; i < len; i++) {
//write your parsing logic here
}
}
}).start();
}
关于php - 使用 php volley 库从服务器获取大量 json 数据花费太多时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41520188/
我目前正在测试 Volley 库。但是当请求失败 (404) 时,它不会再次执行,或者至少没有错误。但是缺少数据。如果请求失败,这是重试请求的正确方法吗? 提前致谢 req.setRetryPolic
我是新来从事Volley和缓存工作的:P。尽管我已经看过许多与Volley进行图像缓存有关的文章和帖子,但是我仍然不清楚采用Volley进行图像缓存的最佳/首选方式。像磁盘缓存还是内存? Volley
我想使用 Volley 从我的 Android 应用发送请求。 我已经把它包含在 build.gradle 中了 dependencies { ... compile 'com.andr
我的目标是从另一个类调用 Volley,这是一种非常简洁、模块化的方式,即: VolleyListener newListener = new VolleyListener()
我的代码是: class MyService extends Service{ public void onCreate(){ new ImageLoader(mReque
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 4年前关闭。 Improve thi
我需要帮助来解决 Volley 库错误。我已使用 nodejs api 向服务器发送一些凭据以进行用户注册。在成功的情况下,当我的所有凭据对于创建新用户帐户都是唯一的时,它会向我显示所有响应等的所有内
我正在尝试完善我的应用程序中的错误处理,但我找不到 Volley 触发某些错误的集中位置以及原因。例如,我想知道如果我的请求的状态代码是 500 或更大,它肯定会触发 ServerError,但我似乎
当我在调试器中运行该方法时,数据按预期显示,但是每当我尝试使用它执行任何操作时,parentObject 的值都会返回为 null。 我只是想从服务器获取响应并将其存储为 JSONObject 以便在
我正在使用 Android Volley 缓存请求,这在我使用 GET 时工作正常,但由于某些原因我改用 POST。现在我想用不同的 POST 数据缓存相同的 URL。 请求 1 -> URL1,PO
我的情况是使用 Android-volley至 POST我的 json 对象,我可以成功发布所有内容,我的数据在服务器中可见,但服务器响应为 String不像 json ,这就是出现错误的原因。 co
我正在使用 volley 从 REST api 解析电影详细信息,并将解析的数据保存在名为 detailsMovies 的对象数组列表中。但是我无法在 onResponse 方法之外访问 ArrayL
我想知道如何解决这个问题。已完成代码的研究和替换,但问题仍然存在。 这是我使用 volley 的代码。 private void Regist(){ loading.setVisibility
如何创建一个单独的类,在其中定义所有关于 volley在另一个 Activity 中,我们直接传递 URL、CONTEXT 和 Get Response... 最佳答案 首先在Activity中创建回
我正在使用 volley 库并以 XML 格式获取响应。我想知道我们如何使用/volley 库解析响应。谢谢。 最佳答案 StringRequest req = new StringReque
当我在android studio中搜索 Volley 时,同时获取com.mcxiaoke.volley:library:1.0.19和com.mcxiaoke.volley:library-aar
我是 volley 和 android 的新手,我已经用 gradle 安装了 volley 并做了与官方教程相同的操作。但是没有响应,这意味着 Errorlistener 和 Responselis
当我在 Volley 中发出请求时,我收到 com.android.volley.ServerError 和响应代码 400。 我正在做这样的事情(通用示例代码): final String para
我引用了http://www.androidhive.info/2016/02/android-push-notifications-using-gcm-php-mysql-realtime-chat
当我将以下行添加到依赖项的 build.gradle 行时,Android Studio 显示此错误消息:compile 'com.android.volley:volley:1.0.0' apply
我是一名优秀的程序员,十分优秀!