【问题标题】:Android Async Task code structureAndroid Async Task 代码结构
【发布时间】: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()会是一个很好的实现吗?

【问题讨论】:

标签: java android android-asynctask


【解决方案1】:

使用一次尝试捕获:

    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;

    }

【讨论】:

  • 谢谢我现在感觉很愚蠢。看起来很简单!
猜你喜欢
  • 2015-02-11
  • 2019-10-08
  • 1970-01-01
  • 1970-01-01
  • 2018-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多