結合Observable類和AsyncTask,封裝一個帶回調的異步任務類

jopen 9年前發布 | 8K 次閱讀 Android開發 移動開發 CommonTask

bservable結合AsyncTask實現的一個帶回調的異步任務


1.設計目的

該類的設計旨在省去書寫異步任務時,再次添加回調的方法

2.使用

a. 直接聲明使用

    CommonTask<String, String> task = new CommonTask<String, String>() {
                @Override
                public String doInBackground(String params) {
                        try {
                            Thread.sleep(3000);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        return "參數為>>" + params + "\n休眠3秒異步任務2執行結束";
                    }
                };
    // 添加回調
    task.addObserver(new Observer() {
            public void update(Observable observable, Object data) {
                // 參數在這里強轉成需要個類型 (String )data,(boolean)data ,
                    mText.append((CharSequence) data);
                    mText.append("\n");
                }
         });
    // 啟動任務
    task.startTask("這是異步任務2");

b. 繼承CommTask,根據需要,startTask時無參數時重寫doInBackGround()方法,帶參數則重寫doInBackGround(A a)方法
   CommonTask<String, String> task = new CommonTask<String, String>() {
                    @Override
                    public String doInBackground(String params) {
                        try {
                            Thread.sleep(3000);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        return "參數為>>" + params + "\n休眠3秒異步任務2執行結束";
                    }
                };
    // 添加回調
    task.addObserver(new Observer() {
            public void update(Observable observable, Object data) {
                // 參數在這里強轉成需要個類型 (String )data,(boolean)data ,
                    mText.append((CharSequence) data);
                    mText.append("\n");
                    }
          });
    // 啟動任務
    task.startTask("這是異步任務2");

項目主頁:http://www.baiduhome.net/lib/view/home/1442138473117

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!