У меня есть текстовый файл в папке с активами, где он содержит около 15000 строк, я хочу перебрать каждую строку, я применил логику с помощью BufferedReader, но это занимает слишком много времени, чтобы перебрать каждую строку (1мин +) .
Теперь мне нужно сократить время чтения каждой строки, чтобы максимизировать UX.
AsyncTask<Void, String, Void> asyncTask = new AsyncTask<Void, String, Void>() {
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
appBarLayout.setVisibility(View.VISIBLE);
viewpager.setVisibility(View.VISIBLE);
splashScreen.setVisibility(View.GONE);
gamesLoaded = true;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
makeRandomText(gameRandomText, "Random Text" + new Random().nextInt(1000));
}
@Override
protected void onProgressUpdate(String... values) {
super.onProgressUpdate(values);
gamePercentage.setText(values[0]);
}
@Override
protected Void doInBackground(Void... voids) {
BufferedReader reader = null;
try {
reader = new BufferedReader(
new InputStreamReader(getAssets().open("games.txt"), "UTF-8"));
int startingCount = 0;
// do reading, usually loop until end of file reading
String mLine;
while ((mLine = reader.readLine()) != null) {
Game gameAdded = new Game(mLine);
addGame(database, gameAdded);
startingCount++;
String percentage = startingCount * 100 / Constants.GAMES_COUNT + "%";
publishProgress(percentage);
}
} catch (IOException e) {
//log the exception
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
//log the exception
}
}
}
return null;
}
};