【发布时间】:2013-12-03 13:20:18
【问题描述】:
我目前正在尝试制作一个在 android 中下载文件的 AsyncTask。它处于初步状态,但我的代码被我使用 eclipse 的建议自动完成的 try catch 语句淹没了。
这是创建和写入文件的单个函数的代码:
public void CreateFolder(View view) throws Exception{
File folder = new File(Environment.getExternalStorageDirectory().toString()+"/Dit+/Files");
folder.mkdirs();
folder.toString();
File file = new File(folder, "test.txt");
String url="http://cgi.di.uoa.gr/~std10108/a.txt";
FileWriter fw = new FileWriter(url);
fw.write(a);
fw.close();
}
当我将此块转移到异步任务时,它变成了:
private class AsyncTaskRunner extends AsyncTask<String, String, String> {
@Override
protected String doInBackground(String... params){
File folder = new File(Environment.getExternalStorageDirectory().toString()+"/Dit+/Files");
folder.mkdirs();
folder.toString();
String a=params[0];
File file = new File(folder, "test.txt");
FileWriter fw = null;
try {
fw = new FileWriter(file);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
fw.write(a);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
fw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
我知道暂时使用异步任务是没用的,但我想先熟悉异步任务的概念,而不是按应有的方式使用它。其实url字符串是我要下载的文件的来源,但我现在只想做一个例子。
所以我的问题是:有没有办法在没有这些 try-catch 语句的情况下编写异步任务,因为它使代码不可读和丑陋。
在异步任务的doInBackground()函数中调用函数CreateFolder()会是一个很好的实现吗?
【问题讨论】:
-
您可以将所有三个调用放在一个 try-catch 块中,无需将它们分开。
-
是的,只需使用一次 try catch,这将使代码易于阅读。例如,您可以在此处查看示例异步任务代码:[link] (stackoverflow.com/questions/20342189/push-data-to-android-app/…)
标签: java android android-asynctask