テキストファイルからデータを読み込み、各ファイルのデータを個別に保存するアプリがありますArrayList
。onCreateメソッドからのすべてのデータの読み込みがクラッシュしない場合でも、非同期スレッドにデータを読み込むように言われました(テキストファイルからArrayListsにすべてのデータを読み込むのに約12秒かかります)。
非同期スレッドを設定しようとしましたが、問題が発生しました。私は非同期スレッドを初めて使用するため、すべての詳細を理解していません/まだ完全には理解していません(さまざまなソースから情報をつなぎ合わせようとしています)。関連するコードは次のとおりです。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_name);
new loadData().execute();
arrayListElement = ArrayList1.get(0);
}
private class loadData extends AsyncTask<Void, Void, Void> {
ProgressDialog dialog;
protected void onPreExecute() {
dialog = new ProgressDialog(ClassName.this);
dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
dialog.show();
}
@Override
protected Void doInBackground(Void... arg0) {
// TODO Auto-generated method stub
populateArrayLists();
return null;
}
/*protected void onProgressUpdate() {
}
protected void onPostExecute() {
}*/
}
onCreateメソッドの最後のステートメントでIndexOutOfBoundsException(無効なインデックス0、サイズは0)を取得しています。
私がやりたいのは、別のスレッドにデータをロードすることだけです。アプリがクラッシュしなくても、実行するように言われたからです。UIスレッドは残りのすべてを処理する必要があります。非同期スレッドコードを追加するまで、アプリは正常に機能していました。
私のファイルがどのように読み取られるかはここで見ることができます: Android:非同期スレッドが必要ですか?
私は何が間違っているのですか?