Я хочу видеть данные в gridview с помощью sqlite (данные), но мое приложение становится слишком медленным - PullRequest
0 голосов
/ 27 сентября 2019

Я занимаюсь разработкой приложения.В этом я использую базу данных sqlite.И я хочу показать данные в gridview, и данные больше 15k, поэтому мое приложение становится очень медленным. Экран становится черным на секунду после того, как эти данные отображаются.

Когда данные ниже 5k, то они работают нормально, нокогда данные превышают 10 Кб, приложение становится слишком медленным.

Отображение всех данных, но экран мигает секунду.

Ответы [ 2 ]

0 голосов
/ 27 сентября 2019

GridView настолько старый, тот же ListView и старый.Используйте RecyclerView .

В чем его проблема?

GridView или ListView удерживаются или загружают полный список данных, где только RecyclerView удерживаетсяданные, которые в данный момент отображаются на экране, означают видимый экран.[вы можете удерживать средства обработки или что-то подобное].

Итак, что вы должны сделать?

  1. Если вы хотите отобразить данные как Grid, вы можете использовать GridLayoutManager сRecyclerView
  2. Вы можете использовать нумерацию страниц с recyclerView.И хорошая новость в том, что у Google есть собственная библиотека страниц для Android.Вы можете получить подробную информацию здесь .
  3. Добавьте ваш http-вызов в фоновом потоке и отобразите данные в потоке пользовательского интерфейса.
0 голосов
/ 27 сентября 2019

Возможно, попытайтесь загрузить данные в AsyncTask в фоновом режиме, а затем отобразить эти данные, когда они полностью загружены.

Во время загрузки данных на экране отображается логотип загрузки или индикатор выполнения, изатем отобразите свои данные в виде сетки.

Что-то вроде этого:

new AsyncTask<Void, String, String>(){
            @Override
            protected void onPreExecute() {
                //Display your loader
            }

            @Override
            protected String doInBackground(Void... voids) {
                //Load your datas
                return null;
            }

            @Override
            protected void onPostExecute(String msg) {
                //Close your loader
                //Display your datas
            }
        }.execute(null,null,null);

Таким образом, поток пользовательского интерфейса не будет заблокирован, а отображение по-прежнему будет плавным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...