我有大约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)?
答案 0 :(得分:2)
尝试从另一个Thread读取数据库,例如使用AsyncTask:
{{1}}
答案 1 :(得分:0)
为什么不在每个段落中删除长篇文章呢?创建一个简单的列表视图,其中只有一个textview,它是一个段落在listrow中。删除分隔符(因此用户不会注意到它们位于带有分隔段落的列表视图中)。 listview将处理可见段落包含他们需要的文本以及完成后的文本。
正如florent在他的回答中建议的那样,在asynctask中进行(不是在主线程中,而是在后台)。