ユーザーがアプリケーションをロードするたびに提供されるファイルに1000行あります。
私の現在のアプローチは次のとおりです。
MainActivity:onCreate:AsyncTaskを開始します
AsyncTask onPreExecute: 進行状況のダイヤルを表示
AsyncTask doInBackground: キー/値がsharedpreferencesに存在するかどうかを確認します。存在する場合は、doInBackgroundで何もしません。いいえ(初めてのユーザー)の場合は、rawファイルから読み取り、stringbuilderを作成します。StringBuilderのコンテンツをSharedpreferencesのキーと値のペアとして保存します。
AsyncTask onPostExecute: sharedpreferencesからtextviewにデータを入力します。進行状況ダイアログを閉じます。
doInBackgroundメソッドでファイルから読み取るコードは次のとおりです。
StringBuilder sb = new StringBuilder();
InputStream textStream = getBaseContext().getResources().openRawResource(R.raw.file);
BufferedReader bReader = new BufferedReader(new InputStreamReader(textStream));
String aJsonLine = null;
try {
while ((aJsonLine = bReader.readLine()) != null) {
sb.append(aJsonLine + System.getProperty("line.separator"));
}
} catch (IOException e) {
e.printStackTrace();
} finally{
try {
bReader.close();
textStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
ユーザーは、最初の起動には約9〜10秒、その後の起動には4〜5秒待つ必要があることがわかりました。私の場合、パフォーマンスを改善するための提案。