java - Android异步任务代码结构

标签 java android android-asynctask

我目前正在尝试制作一个在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();
    }     

当我将此 block 传输到异步任务时,它会变成这样:

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:

    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;

    }

关于java - Android异步任务代码结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20352338/

相关文章:

java - 我的适配器不会更新值,直到我返回然后再次返回该 Activity 。什么原因

java - 如何处理 Android 中的后台任务队列?

android - RecyclerView 和异步加载

java - 我已经创建了一个基本的 GUI,但按钮不会与文本字段交互

Java Random,种子的微小变化只会导致输出的微小变化

java - Android 应用程序中 JSON 对象绑定(bind)的替代方案

java - 如何获取一个单词在句子中出现的总次数

java - Android 中的计数器出现错误

java - 在 viewpager 中查看所有 View 时如何显示按钮?

android - 下载管理器安卓 : Download Complete