使用AsyncTask从sd卡解析xml时遇到麻烦

时间:2013-05-09 08:02:53

标签: android xml multithreading parsing android-asynctask

我的应用程序中的AsyncTask存在一些问题。 有AsyncTask从SD卡中获取文件并使用它进行操作。

它实际上给了我一个合适的结果,但是在执行任务时有一个黑屏和一个被阻止的用户界面大约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);      
}

希望你帮我解决这个问题,谢谢!

1 个答案:

答案 0 :(得分:0)

如果您在Intent的附加内容中放入太多数据,就会发生这种情况。