Android封装简化版的AsyncTask用法实例

2018-08-21 / 16 阅读 / Android

使用Task时,有时只是希望简单的后台运行,甚至不需要理会任何结果。而直接继承AsyncTask所要写的东西,我是感觉蛮多的。所以想办法定义一个简单好用的封装子类。

我是把这个都集成到了BaseActivity里,调用比较自由且简单。

主要分两部分:

  1. 任务执行方法

  2. 任务实例

注意 因为Android非静态Task时,Task和Activity相互持有,有可能导致内存泄露,这里使用static,到时候使用时看情况取舍了。
    //定义
    public static abstract class Task extends AsyncTask<Void, String, Void> {

        protected abstract void run();

        protected void post() {
        }

        @Override
        protected Void doInBackground(Void... voids) {
            try {
                run();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(Void voids) {
            post();
        }
    }

    //执行
    public void execTask(Task task) {
        task.execute();
    }

以上对Task进行了一个简单的封装。

简单用法

    execTask(new Task() {
        @Override
        protected void run() {
        
        }
    });
相关推荐