将49.000字符插入TextView和低速应用程序

时间:2015-05-13 10:54:17

标签: java android mysql sqlite

我有大约500个字母和演讲的集合,其中一些非常大(约49,000个字符)。我从MySQL导出了这些字母和语句,并将它们导入sqlite,以便在Android应用程序中使用它们。

应用程序正常运行,对于小写字母来说速度很快。然而,当用户选择其中一个大字母(具有约49,000个字符的字母)时,打开该字母将花费很长时间。我打开这封信的意思是使用setText函数将字母内容插入TextView中,如下所示:

myDbHelper2 = new DataBaseHelpername(this.getApplicationContext());
    myDbHelper2= new DataBaseHelpername(this);
try {

    myDbHelper2.createDataBase();

}                   

catch (IOException ioe) {
    throw new Error("Unable to create database");
        }
    try {

                myDbHelper2.openDataBase();}        

catch (SQLException sqle) {

    sqle.printStackTrace();

}
    db = myDbHelper2.getReadableDatabase();
    mCursor= db.rawQuery("SELECT field_translation_fa_value,my_id  FROM name WHERE my_id ="+id+" ;",null);
    mCursor.moveToFirst();
    String ff=mCursor.getString(0);
    txtmatnfa.setText(ff);

我可以做些什么来优化它?

问题出在哪里?插入(setText)还是选择(sqlite)?

2 个答案:

答案 0 :(得分:2)

尝试从另一个Thread读取数据库,例如使用AsyncTask:

{{1}}

答案 1 :(得分:0)

为什么不在每个段落中删除长篇文章呢?创建一个简单的列表视图,其中只有一个textview,它是一个段落在listrow中。删除分隔符(因此用户不会注意到它们位于带有分隔段落的列表视图中)。 listview将处理可见段落包含他们需要的文本以及完成后的文本。

正如florent在他的回答中建议的那样,在asynctask中进行(不是在主线程中,而是在后台)。