Volley + GSon: создать класс для разбора в фоновом режиме с помощью Callback - PullRequest
0 голосов
/ 26 сентября 2019

Поэтому я пытаюсь ускорить запуск моего приложения и сделать доступной мою логику синтаксического анализа во время выполнения для кнопки «refresh».

Я анализирую 2 JSON при запуске с 2 разных URLс Volley + GSON => Room Database

Теперь я хочу, чтобы мой LoadDataFromServer () находился в другом классе, поэтому я могу вызывать его из любого места в моем приложении, дождаться обратного вызова onsuccess, чтобы узнать, был ли анализуспешно или нет / не удалось и обработать этот обратный вызов в моей деятельности по вызову.

Как я могу это сделать?

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.startup);
        clearAllTables();
        LoadDataFromServer();
    }

        public void clearAllTables() {
        AppDatabase db = Room.databaseBuilder(getApplicationContext(),
                AppDatabase.class, "database").allowMainThreadQueries().build();

        db.clearAllTables();
        db.close();
    }


        public void LoadDataFromServer() {

            final JsonObjectRequest requestOne = new JsonObjectRequest(Request.Method.GET, URL1, null, new Response
                        @Override
            public void onResponse(JSONObject response) {
                .. handling the response:

                 insertData(Object1);
                i= i+1;
                                 } catch (JSONException e) {
                    e.printStackTrace();
                }

            @Override
            public void onErrorResponse(VolleyError error) {
                splashstatus.setText("Error");
                Log.e("VOLLEY ERROR",error.toString());
            }
        }


                public void LoadDataFromServer() {

            final JsonObjectRequest requestTwo = new JsonObjectRequest(Request.Method.GET, URL1, null, new Response
                        @Override
            public void onResponse(JSONObject response) {
                .. handling the response:

                 insertData(Object2);
                 i = i+1
                                 } catch (JSONException e) {
                    e.printStackTrace();
                }

            @Override
            public void onErrorResponse(VolleyError error) {
                splashstatus.setText("Error");
                Log.e("VOLLEY ERROR",error.toString());
            }
        }
    }
            requestOne.setRetryPolicy(new DefaultRetryPolicy(
                10000,
                3,
                2));

        requestTwo.setRetryPolicy(new DefaultRetryPolicy(
                10000,
                3,
                2));


public void starter (int i) {
    if (i == 2) {
        //START MAIN ACTIVITY

    }


public void insertData(Objects[] object) {

        AppDatabase db = Room.databaseBuilder(getApplicationContext(),
                AppDatabase.class, "database").allowMainThreadQueries().build();



        for() {
    // INSERTING ALL THE DATA IN TO THE DATABASE
        }

    }
}


}
...