-1
15 초마다 데이터를 동기화하는 생성 된 JobService (mysql과 동기화되지 않은 상태의 데이터 만 동기화)에 대해 SQLite 데이터를 mysql과 동기화하려고합니다. 이것은 localhost (xampp 서버)와 완벽하게 작동합니다. 하지만 웹 서버에 문제가 발생했습니다. 15 초마다 JobService와 중복되는 항목이 발생합니다.JobService가 제대로 작동하지 않습니다.
는
JobInfo.Builder builder = new JobInfo.Builder(1,
new ComponentName(getPackageName(), MyService.class.getName()));
builder.setPeriodic(15000);
또한 내 로그 캣이
E/표면 보여줍니다
MyService.javapublic class MyService extends JobService { private DatabaseHelper db; SQLiteDatabase sqLiteDatabase; private Handler mJobHandler = new Handler(new Handler.Callback() { @Override public boolean handleMessage(Message msg) { Toast.makeText(getApplicationContext(), "JobService task running", Toast.LENGTH_SHORT).show(); jobFinished((JobParameters) msg.obj, false); return true; } }); @Override public boolean onStartJob(JobParameters params) { mJobHandler.sendMessage(Message.obtain(mJobHandler, 1, params)); db = DatabaseHelper.getInstance(getApplicationContext()); postData(); //db.close(); return true; } @Override public boolean onStopJob(JobParameters params) { mJobHandler.removeMessages(1); return false; } private void postData() { Cursor cursor = db.getUnsyncedNames(); try { if (cursor != null) { if (cursor.moveToFirst()) { do { saveName(cursor.getInt(cursor.getColumnIndex(DatabaseHelper.COLUMN_ID)), cursor.getString(cursor.getColumnIndex(DatabaseHelper.COLUMN_FROM_NO)), cursor.getString(cursor.getColumnIndex(DatabaseHelper.COLUMN_TO_NO))); } while (cursor.moveToNext()); } } } finally { if (cursor != null && !cursor.isClosed()) cursor.close(); db.close(); } } private void saveName(final int id, final String fromNo, final String toNo) { StringRequest stringRequest = new StringRequest(Request.Method.POST, Config.URL_REQUEST_SMS, new Response.Listener<String>() { @Override public void onResponse(String response) { try { JSONObject obj = new JSONObject(response); if (!obj.getBoolean("error")) { //updating the status in sqlite db.updateNameStatus(id,NAME_SYNCED_WITH_SERVER); sqLiteDatabase = db.getWritableDatabase(); if (sqLiteDatabase != null) { sqLiteDatabase.delete(DatabaseHelper.TABLE_NAME, null, null); } // db.close(); Toast.makeText(getApplicationContext(),"Unsynced no. submitted!",Toast.LENGTH_LONG).show(); //calls.clear(); } } catch (JSONException e) { e.printStackTrace(); Toast.makeText(getApplicationContext(),"JSONException error1 : "+e,Toast.LENGTH_LONG).show(); } finally { db.close(); } } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Toast.makeText(getApplicationContext(),"VolleyError error2 : "+error,Toast.LENGTH_LONG).show(); error.printStackTrace(); } }) { @Override protected Map<String, String> getParams() throws AuthFailureError { Map<String, String> params = new HashMap<>(); params.put("mobile", fromNo); params.put("toMob", toNo); return params; } }; int socketTimeout = 60000; RetryPolicy policy = new DefaultRetryPolicy(socketTimeout, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT); stringRequest.setRetryPolicy(policy); MyApplication.getInstance().addToRequestQueue(stringRequest); } }
MainActivity.java는 : getSlotFromBufferLocked : 알 수없는 버퍼 : 0x7f517cd1b540
을 테스트 한으로 2 개조로 이동하는 것입니다
작동 강제 즉시 응답 메이트 주셔서 감사합니다. 나는 당신이 알게하려고 노력할 것입니다. – Omi
희망을 위해 일한 희망, –
감사합니다. 개조 작업이 매력처럼 ... – Omi