我收集了大约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/

10-09 19:51