我有一個應用程序正在從文本文件加載數據並將每個文件的數據存儲到單獨的ArrayList
。即使我的應用沒有崩潰從onCreate方法加載它(它只需要大約12秒鐘將所有數據從文本文件加載到ArrayLists中),但我仍被告知要將數據加載到異步線程中。Android:異步線程問題
我試圖建立一個異步線程,但我遇到了一個問題。我是全新的異步線程,所以我不知道/還沒有完全理解所有的細節(我試圖從不同來源拼湊信息)。下面是培訓相關代碼:
@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() {
}*/
}
我正在IndexOutOfBoundsException異常(無效指數0,大小爲0),在onCreate方法的最後一條語句。
我想要做的就是將數據加載到單獨的線程中,因爲即使我的應用程序沒有崩潰,我被告知應該這樣做。 UI線程應該處理所有剩下的事情。該應用程序工作正常,直到我添加了異步線程代碼。
我如何讀取文件可以在這裏看到: Android: Asynch Thread Needed?
我在做什麼錯?
您好:
例如!除了下面提出的修復方案,並且在您開始工作之後,如果用戶旋轉屏幕或類似的方式重新加載您的活動,您可能會遇到另一個問題,如果您想關閉onPostExecute中的進度對話框。由於這是等待,用戶可以離開並觸發重新加載。看[這篇文章](http://blogactivity.wordpress.com/2011/09/01/proper-use-of-asynctask/)。這就是爲什麼我提出了Loader API的原因,它帶來了更少的麻煩。 – slezica
@uʍopǝpısdn好吧,我知道你說過它已經有一段時間了,因爲你已經使用它了,但是你認爲你可以把一些東西放在一起,就像你看到的那樣加載文件?我只是想將每個15個文件加載到他們自己的ArrayList中。 onClick方法將處理所有其他事情。我將查看Loader API,並在今天晚些時候嘗試查找一些示例,看看是否可以使用異步方法(由LuxuryMode提供)。 [我在大學裏教我自己,所以我在空閒時間工作。 :)] –
@uʍopǝpısdn到目前爲止,我所能找到的是過於複雜的例子,我不明白和加載數據庫(我也不明白)。 :|我無法找到裝載器從任何地方讀取文件的例子。 –