Android Async Task代码结构

时间:2013-12-03 13:20:19

标签: java android android-asynctask

我目前正在尝试制作一个在android中下载文件的AsyncTask。它处于初步状态但是我的代码被淹没在try catch statementes中,我使用eclipse的建议自动填充。

以下是来自创建和写入文件的单个函数的代码:

 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()会是一个很好的实现吗?

1 个答案:

答案 0 :(得分:1)

使用一次尝试catch:

    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);
            fw.write(a);       
            fw.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
            return null;

    }