2013-05-09 57 views
0

我的應用程序中有AsyncTask問題。 有AsyncTask從SD卡獲取文件並使用它進行操作。使用AsyncTask從sd卡解析xml時遇到問題

它實際上給了我一個正確的結果,但在做任務時有一個黑屏和一個阻塞的用戶界面約3秒,顯然會讓用戶惱火。我想知道如何擺脫這個問題。 所以這裏是代碼:

ParseXMLTask.java:

public ParseXMLTask(Context context, IPostParse iPostParse, ProgressBar progressBar) { 
    this.context = context; 
    this.iPostParse = iPostParse; 
    this.progressBar = progressBar; 

} 

@Override 
protected Intent doInBackground(File... params) { 

    File file = params[0]; 

    Intent pack = new Intent(context, PackActivity.class); 

    /* some heavy parsing task */ 

    return pack; 
} 

@Override 
protected void onPreExecute() { 
    progressBar.setIndeterminate(true); 
} 

@Override 
protected void onPostExecute(Intent result) { 
    iPostParse.postParse(result); 
} 

LoadingActivity.java:

將執行的任務代碼:

private void parseXML() { 
    File file = new File(PATH + fileName + ".xml"); 

    ParseXMLTask parseTask = new ParseXMLTask(this, this, loadingBar); 
    parseTask.execute(file); 
} 

而實現的方法的界面,沒什麼特別的:

public void postParse(Intent result) { 
    result.putExtra("name", packName); 
    result.putExtra("author", packAuthor); 
    result.putExtra("date", packDate); 
    result.putExtra("file", fileName); 
    result.putExtra("votes", votes); 
    startActivity(result);  
} 

希望你能幫我解決這個問題,謝謝!

+0

使用意圖服務而不是asynctask – Raghunandan 2013-05-09 08:11:33

回答

0

如果您將太多數據放入Intent的附加內容中,可能會發生這種情況。