Assetsフォルダーにあるテキストファイルからデータを読み取るアプリを作成しています。ファイルごとに、データを個別に保存しますArrayList
。ファイルは、アクティビティのonCreate()メソッドで次々に読み込まれます。すべてのテキストファイルの合計は1.8MBであり、エミュレーターでは、アクティビティのロードに現在12秒かかります。アプリはエミュレーターでクラッシュしません(約12秒かかります)。
非同期スレッドについて読んだことがありますが、過去にそれらを必要としたことはありません。アクティビティが実際に読み込まれていてクラッシュしていないことをユーザーに通知するために、ある種のメッセージまたはプログレスバーを用意することを計画していました。
だから私の質問は:アクティビティをロードするときにアプリがクラッシュしない場合でも、ファイルの読み取りを非同期スレッドまたは別のスレッドに置く必要がありますか?もしそうなら、私はそれを適切に行うにはどうすればよいですか?(私はこれまでやったことがありません。)
テキストファイルを読み取ったサンプルコードは次のとおりです。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_name);
populateArrayLists();
}
public void populateArrayLists() {
BufferedReader br = null;
try {
br = new BufferedReader(new InputStreamReader(getAssets().open(
"text1.txt")));
String text;
while ((word = br.readLine()) != null) {
ArrayList1.add(text);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
br.close(); // stop reading
} catch (IOException ex) {
ex.printStackTrace();
}
}
br = null;
try {
br = new BufferedReader(new InputStreamReader(getAssets().open(
"text2.txt")));
// the same process is duplicated for 1-15
// it may not be the best or most efficient way but it works
どんな助けでもいただければ幸いです。