почему загрузка базы данных комнаты очень долго и медленно - PullRequest
0 голосов
/ 30 апреля 2019

Я использую базу данных комнаты для кэширования некоторых данных в моем app.but, когда я запускаю приложение в эмуляторе или на моем реальном телефоне, обычно требуется 5 секунд, чтобы загрузить данные из базы данных и показать ... это очень долго время ... даже мои данные мало Может ли кто-нибудь помочь мне решить эту проблему? спасибо

ordeeDao.java:

  @Query("SELECT * FROM tbl_orders")
        List<Orders> getOrders();

и мой класс CacheDatabase:

 @Database(entities = {Orders.class}, version = 1,exportSchema = false)
       public abstract class CacheDatabase extends RoomDatabase {

            private static CacheDatabase INSTANCE;

            public abstract OrdersDao ordersDao();

            public static CacheDatabase getInMemoryDatabase(Context context) {
                if (INSTANCE == null) {
                    INSTANCE =
                            Room.databaseBuilder(context.getApplicationContext(), CacheDatabase.class, "CacheDb.sql")
                                    .allowMainThreadQueries()
                                    .build();
                }
                return INSTANCE;
            }

            public static void destroyInstance() {
                INSTANCE = null;
            }
        DataBase.java:
          public JSONArray getOrders(){
                try {
                    return new JSONArray(new GsonBuilder().create().toJson(db.ordersDao().getOrders()));
                } catch (JSONException e) {
                    e.printStackTrace();
                    return null;
                }
            }
             private void SetOrdersDB() {
                JSONArray ordersArray=db.getOrders();
                List<MainPojo.Order> ordersList=new ArrayList<>();
                for (int i=0;i<ordersArray.length();i++){
                    JSONObject object;
                    MainPojo.Order order=new MainPojo.Order();
                    try {
                        object=ordersArray.getJSONObject(i);
                        order.setId(object.getInt("id"));
                        order.setTicket_id(object.getString("ticket_id"));
                        order.setService(object.getString("service"));
                        order.setStatus(object.getString("status"));
                        order.setType(object.getString("type"));
                        order.setFromCurrency(object.getString("from_currency"));
                        order.setFromAmount(object.getString("from_amount"));
                        order.setToCurrency(object.getString("to_currency"));
                        order.setToAmount(object.getString("to_amount"));
                        order.setPayableAmount(object.getString("payable_amount"));
                        order.setFee(object.getString("fee"));
                        order.setDiscount(object.getString("discount"));
                        order.setPaymentMethod(object.getString("payment_method"));
                        order.setPaymentGateway(object.getString("payment_gateway"));
                        order.setPaymentRef(object.getString("payment_ref"));
                        order.setPayedAt(object.getString("payed_at"));
                        order.setExpiresAt(object.getString("expires_at"));
                        order.setHandledAt(object.getString("handled_at"));
                        order.setCreatedAt(object.getString("created_at"));
                        order.setUpdatedAt(object.getString("updated_at"));
                        order.setIcon(object.getString("icon"));
                        order.setAmount(object.getString("amount"));
                        ordersList.add(order);
                    }catch (Exception e){
                        e.getMessage();
                    }
                }
                ordersFragment=new OrdersFragment(ordersList,this);
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...