我收集了大约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)?
最佳答案
尝试从另一个线程读取数据库,例如使用AsyncTask:
new AsyncTask<Void,Void,String>(){
@Override
protected String doInBackground(Void... params) {
myDbHelper2 = new DataBaseHelpername(YourActivity.this.getApplicationContext());
myDbHelper2= new DataBaseHelpername(YourActivity.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);
return ff;
}
@Override
protected void onPostExecute(String ff) {
super.onPostExecute(s);
txtmatnfa.setText(ff);
}
}.execute();
关于java - 在TextView和低速应用程序中插入49.000个字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30212750/