我的应用程序中的 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);
}
加载活动.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);
}
希望您能帮我解决这个问题,谢谢!