【问题标题】:Sqlite database to change TextView in android appSqlite 数据库在 Android 应用程序中更改 TextView
【发布时间】:2012-04-21 21:07:54
【问题描述】:

我正在使用 sqlite 数据库文件中的列设置我的 textview。问题是当我来回更改视图时,从数据库中检索时存在非常明显的滞后。代码如下:

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 行(s), max size=1048576 在 startPos 0row 2736 分配 fieldDir 失败。这是什么意思?
  • 请按照detailed logcat.这个例子进行操作

标签: android android-layout android-intent mobile-application


【解决方案1】:

延迟是由于在主线程中访问数据库造成的,您希望它在自己的线程中运行。这是Processes and Thread 上的开发人员指南,它将为您提供全面的概述。接下来研究 AsyncTask 之类的东西,了解访问数据库的一种方法。

至于没有从你的数据库中得到结果,我不能不看到与db 关联的类。如果您需要更多帮助,请在您的问题中包含该代码和任何 logcat 错误。

编辑

根据您提供的错误代码,我找到了指向 similar question and detailed answer. 的链接

【讨论】:

    【解决方案2】:

    我从 sqlite + android 的经验是,它最初在查询数据库时非常慢,但之后它可以非常快速地检索大量数据。如果要避免延迟,请改用文件。 我的小经验来自开发字典应用 Wordlist Pro,因为它太慢(而且体积很大),我不得不放弃数据库以获取文本文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-05
      • 2013-04-24
      • 1970-01-01
      • 1970-01-01
      • 2012-01-18
      相关资源
      最近更新 更多