2013-02-05 90 views
1

我正在創建一個應用程序,涉及從資產文件夾中的文本文件中讀取數據。對於每個文件,它將數據存儲在單獨的ArrayList中。這些文件在活動的onCreate()方法中一個接一個地讀取。所有文本文件總計1.8 MB,並且在模擬器上,它需要12秒才能加載活動。該應用程序不會在模擬器上崩潰(它只需要大約12秒)。Android:需要異步線程?

我已閱讀關於異步線程,但我從來沒有需要他們在過去。我打算有一些消息或進度條來通知用戶該活動實際上正在加載並且沒有崩潰。

所以我的問題是:即使應用程序不加載活動時崩潰,我應該仍然把文件的閱讀在異步或不同的線程?如果是這樣,我將如何正確地做到這一點? (我從來沒有這樣做。)

下面是示例代碼與文本文件的閱讀:

@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 

任何幫助,將不勝感激。

回答

0

是的,你需要一個後臺線程。 Loader api可能是你最簡單的賭注。

這將允許您至少顯示通知並在文件加載時提供一些內容。如果這就是你正在做的事情,甚至可能會加載它們並逐漸顯示數據。

編輯:裝載機是compatibility library中的3.0功能。如果您不願意添加依賴項,則始終可以回退到AsyncTask,在這種情況下,您可以查看this

+0

如果可能,你會願意幫助我開始(將它與我擁有的東西綁在一起)嗎? –

+0

我有一段時間沒有做Android,所以我不能花時間編寫代碼(需要大量的重新學習),但是歡迎與我開始聊天室,我會協助你盡我所能吧 – slezica

+0

好的。我實際上已經爲我的嘗試開闢了另一個問題(請參閱我的鏈接問題)。請隨時查看我所嘗試的內容(也許它會引發某些事情?)並投入您的輸入。 –