2013-08-18 36 views
1

我有一個應用程序,從網上下載文本文件到應用程序私人文件夾/data/data/com.example.app。該文件下載時需要讀取一些數據。無法立即讀取下載的文本文件

代碼在我的應用程序:

private class DownloadTextFile extends AsyncTask<String, Integer, String> { 
    @Override 
    protected String doInBackground(String... sUrl) { 
     // download text file 
    } 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 

     // read text file 

     } 

當我嘗試讀取文本文件,我得到了一個file not found錯誤。
當我關閉應用程序並重新打開它時,該應用程序讀取下載的文本文件就好了。

編輯:

哈哈,亞姆soooo愚蠢。謝謝大家 how can i make this question as answered

+0

只要勾選了「複選標記」圖標下面的帖子投票向上/在最好解決問題的答案上投下箭頭,或者找到最合適的答案 – Tseng

回答

1

您應該閱讀onPostExecute(...)中的數據異步類的方法。
由於onPostExecute(...)方法將在doInBackground(...)方法完成處理後執行,其中onPreExecution(...)方法在調用doInbackground(...)方法之前調用。所以您正在試圖打開該文件,也就是還沒有在你的doInBackground(...)方法下載
您的代碼應該是這樣的:

private class DownloadTextFile extends AsyncTask<String, Integer, String> { 
@Override 
protected String doInBackground(String... sUrl) { 
    // download text file 
} 

@Override 
protected void onPostExecute(.....) { 
    super.onPostExecute(); 

    // read text file 

    } 
+1

這是錯誤的。 'onPostExecute'不是無參數的。另外,讀取文本文件不應該發生在主線程中,而應該發生在後臺任務中,因爲讀取更大的文件可能需要相當長的時間來阻塞主線程。 – Tseng

+0

這被理解爲我的朋友。 –

+0

@Tseng:你確實看過文檔?那麼你的答案缺少關於Async類的相當多的細節。除此之外,問題是關於Anync類的錯誤執行,而不是如何正確讀取文本文件。您正在強調讀取UI線程點,從問題的角度來看這是無效的。是的,包括在附加信息中是正確的。 –