Nano Hash - криптовалюты, майнинг, программирование

База данных Sqlite для изменения TextView в приложении для Android

Я устанавливаю свое текстовое представление, используя столбцы из файла базы данных sqlite. Проблема в том, что, когда я меняю представление вперед и назад, возникает очень очевидная задержка при извлечении из базы данных. Вот код:

public class Flipcard extends Activity implements OnClickListener {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    LinearLayout layMain = (LinearLayout) findViewById(R.id.FlashCardFront);
    layMain.setOnClickListener(this);
    Cursor cur;
    DbH db = null;
    TextView tv=(TextView) findViewById(R.id.TV_Word);
    TextView txtView=(TextView) findViewById(R.id.TV_CardNo);
    try {
        db=new DbH(this);
    } catch (IOException e2) {

        e2.printStackTrace();
    }
    try {
        db.createdatabase();
    } catch (IOException e) {

        e.printStackTrace();
    }
    db.opendatabase();
    cur=db.data();
    cur.moveToFirst();
    tv.setText(cur.getString(0));
    cur.close();
}
public void onClick(View v) {
Intent i=new Intent(this,Flipcard_back.class);
startActivity(i);
}

}

другой файл Java, который вызывается при нажатии:

 public class Flipcard_back extends Activity implements OnClickListener{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_back);
    LinearLayout layMain = (LinearLayout) findViewById(R.id.FlashCardRear);
    layMain.setOnClickListener(this);
}
public void onClick(View v) {
Intent i=new Intent(this,Flipcard.class);
startActivity(i);
}
}

который на самом деле вызывает предыдущий. Проблема в том, что я являюсь одним из самых начальных этапов разработки моего приложения. Сейчас я только пытаюсь изменить два текстовых представления в первом java-файле, используя мою базу данных. Когда я переключаюсь туда и обратно, появляется отставание около секунды. Как исправить? Я делаю что-то неправильно. Также я не могу получить все строки с помощью getstring (1) и т. Д. Почему так? Как мне получить столбцы один за другим?


  • Редактировать: Logcat показывает следующее каждый раз, когда я переключаюсь туда и обратно: нужно расти: mSize=1048576, size=70, freeSpace()=26, numRows=2736 не растет, так как уже есть 2736 строк, максимальный размер=1048576 не удалось выделить fieldDir в startPos 0row 2736. что это значит? 22.04.2012
  • Пожалуйста, следуйте этому примеру подробного логарифма. 22.04.2012

Ответы:


1

Задержка вызвана доступом к вашей базе данных в вашем основном потоке, вы хотите, чтобы она работала в своем собственном потоке. Вот руководство для разработчиков по процессам и потокам, который даст вам общий обзор. Затем посмотрите на что-то вроде AsyncTask для одного из подходов к доступу к базам данных.

Что касается отсутствия результатов из вашей базы данных, я не могу сказать, не видя класса, связанного с db. Включите этот код и любые ошибки logcat в свой вопрос, если вам нужна дополнительная помощь.

ИЗМЕНИТЬ

С предоставленным вами кодом ошибки я нашел эту ссылку на похожий вопрос и подробный ответ.

21.04.2012

2

Мой опыт работы с sqlite + android заключается в том, что изначально он очень медленный при запросе базы данных, но после этого он может очень быстро извлекать большие объемы данных. Если вы хотите избежать задержки, используйте вместо этого файл. Мой скромный опыт связан с разработкой приложения-словаря Wordlist Pro, где мне пришлось отказаться от базы данных для текстовых файлов, поскольку она была слишком медленной (и большой по размеру).

21.04.2012
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..