Я бы хотел, чтобы приложение добавило несколько слов (2k) в UserDictionary.Самый быстрый способ вставить слова в UserDictionary
Я экспериментировал с ContentResolver(). Вставка/насыпной вставка ....
// array of words
String[] words = getResources().getStringArray(R.array.word_array);
Long start,end = null;
start = System.currentTimeMillis();
int len = words.length;
ContentValues[] mValueArray = new ContentValues[len];
ContentValues mNewValues = new ContentValues();
mNewValues.put(UserDictionary.Words.APP_ID, "com.my.example");
mNewValues.put(UserDictionary.Words.LOCALE, "en");
mNewValues.put(UserDictionary.Words.FREQUENCY, "100");
for (int i = 0; i < len; ++i) {
mNewValues.put(UserDictionary.Words.WORD, words[i]);
mValueArray[i] = mNewValues;
}
getContentResolver().bulkInsert(
UserDictionary.Words.CONTENT_URI, // the user dictionary content URI
mValueArray // the values to insert
);
end = System.currentTimeMillis();
Toast toast = Toast.makeText(this, "Time for " + Integer.toString(len-1)+" words: " + Long.toString((end-start)) + "ms", 50);
toast.show();
На моем телефоне занимает около 100 мс за слово, если я bulkinsert на партиях 100. 3+ минут, чтобы вставить 2k слова.
Кому-нибудь известно о более быстром способе вставки слов или любой оптимизации, которая может быть выполнена?
Боковой вопрос: существует ли верхний предел для размера UserDictionary или это зависит от телефона?
Любая помощь оценили
Michealster
Пробовал применятьBatch, похоже, примерно в то же время. Удивительно, что при одном и том же коде вне зависимости от метода существует довольно много изменчивости (~ +/- 10%). Поскольку @PravinCG заявляет, что принципиально не может сделать запись файлов быстрее, независимо от оболочки. – user1094747