From a40e0e51331e5e6f69e8bed5940512b29150c7a9 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期三, 03 七月 2024 18:30:02 +0800
Subject: [PATCH] 代码精简

---
 app/src/main/java/com/taoke/autopay/android/service/ZfbJob.java |   96 ++++++++++++++++++++++++++++++++----------------
 1 files changed, 64 insertions(+), 32 deletions(-)

diff --git a/app/src/main/java/com/taoke/autopay/android/service/ZfbJob.java b/app/src/main/java/com/taoke/autopay/android/service/ZfbJob.java
index ad64dce..0d94642 100644
--- a/app/src/main/java/com/taoke/autopay/android/service/ZfbJob.java
+++ b/app/src/main/java/com/taoke/autopay/android/service/ZfbJob.java
@@ -8,7 +8,6 @@
 import android.os.Handler;
 import android.os.Message;
 import android.text.TextUtils;
-import android.util.Log;
 import android.util.Pair;
 import android.view.accessibility.AccessibilityEvent;
 import android.view.accessibility.AccessibilityNodeInfo;
@@ -20,7 +19,6 @@
 import com.apkfuns.logutils.LogUtils;
 import com.taoke.autopay.android.App;
 import com.taoke.autopay.android.Constant;
-import com.taoke.autopay.android.RxBus;
 import com.taoke.autopay.android.data.local.LocalStore;
 import com.taoke.autopay.android.data.local.entity.TaskQueueInfo;
 import com.taoke.autopay.android.data.network.RestAPI;
@@ -33,7 +31,9 @@
 import com.taoke.autopay.android.utils.accessibility.TextContainsNodeFilter;
 import com.taoke.autopay.android.utils.accessibility.TextNodeFilter;
 
+import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
 import java.util.regex.Matcher;
@@ -61,11 +61,11 @@
 
     private final Subject<Pair<AccessibilityService, AccessibilityEvent>> subject = PublishSubject.create();
 
-    private Disposable mDisposableTimeout;
-    private Disposable mDisposable;
-    private Disposable mDisposableClipboardTimeout;
+
+    private List<Disposable> mDisposableList;
 
     public ZfbJob(Order order) {
+        mDisposableList = new ArrayList<>();
         this.order = order;
         this.payTimes = LocalStore.getInstance().getPayTimes();
         this.payedTimes = LocalStore.getInstance().getPayedTimes();
@@ -108,11 +108,11 @@
         }
 
         extraState = 0;
-        mDisposableTimeout = Single
+        mDisposableList.add(Single
                 .just(true)
                 .delay(40, TimeUnit.SECONDS)
-                .subscribe(aBoolean -> notifyCancel()); // 涓�鍒嗛挓瓒呮椂锛岃嚜鍔ㄥ彇娑堛��
-        mDisposableClipboardTimeout = Single
+                .subscribe(aBoolean -> notifyCancel())); // 涓�鍒嗛挓瓒呮椂锛岃嚜鍔ㄥ彇娑堛��
+        mDisposableList.add(Single
                 .just(true)
                 .delay(15, TimeUnit.SECONDS)
                 .subscribe(aBoolean -> {
@@ -120,8 +120,8 @@
                         LogUtils.tag(TAG).w("鏀粯瀹濈矘璐存澘寮瑰嚭瓒呮椂");
                         notifyCancel();
                     }
-                });// 浠诲姟鍚姩鍒版敮浠樺疂绮樿创鏉挎帹鑽愬脊鍑鸿秴鏃舵椂闂�
-        mDisposable = subject
+                }));// 浠诲姟鍚姩鍒版敮浠樺疂绮樿创鏉挎帹鑽愬脊鍑鸿秴鏃舵椂闂�
+        Disposable mDisposable = subject
                 .debounce(2, TimeUnit.SECONDS)
                 .observeOn(AndroidSchedulers.mainThread())
                 .subscribe(pair -> {
@@ -162,7 +162,7 @@
                             btnPay.performAction(AccessibilityNodeInfoCompat.ACTION_CLICK);
                         }
                     } else {
-                        Disposable mDisposable = RestAPI.getInstance().apiService()
+                        Disposable mDisposable1 = RestAPI.getInstance().apiService()
                                 .setOrderNo(
                                         String.valueOf(LocalStore.getInstance().getUser().id),
                                         order.id,
@@ -185,11 +185,11 @@
                                                     extraState = 2;
                                                     btnPay.performAction(AccessibilityNodeInfoCompat.ACTION_CLICK);
                                                     // 闃叉寮瑰嚭涓嶆槸濂藉弸
-                                                    Single
+                                                    mDisposableList.add(Single
                                                             .just(true)
                                                             .delay(5, TimeUnit.SECONDS)
                                                             .subscribe(aBoolean -> {
-                                                                if(extraState==2){
+                                                                if (extraState == 2) {
                                                                     AccessibilityNodeInfoUtils
                                                                             .getSelfOrMatchingAncestor(
                                                                                     service,
@@ -197,7 +197,7 @@
                                                                                     AccessibilityNodeInfoUtils.FILTER_CLICKABLE)
                                                                             .performAction(AccessibilityNodeInfoCompat.ACTION_CLICK);
                                                                 }
-                                                            });// 浠诲姟鍚姩鍒版敮浠樺疂绮樿创鏉挎帹鑽愬脊鍑鸿秴鏃舵椂闂�
+                                                            }));// 浠诲姟鍚姩鍒版敮浠樺疂绮樿创鏉挎帹鑽愬脊鍑鸿秴鏃舵椂闂�
 
                                                 }
                                             } else {
@@ -209,8 +209,10 @@
                                             notifyCancel();
                                             Toast.makeText(service.getApplicationContext(), throwable.getMessage(), Toast.LENGTH_SHORT).show();
                                         });
+                        mDisposableList.add(mDisposable1);
                     }
                 });
+        mDisposableList.add(mDisposable);
 
         // 涓嬮潰浠g爜閬垮厤鍐呭瓨娉勬紡鍜岃缃嚜鍔ㄨ繍琛岀粨鏋�
         addJobListener(new JobListener() {
@@ -219,9 +221,15 @@
                 // 100琛ㄧず浠诲姟缁堟
                 extraState = 100;
                 sendUIMsg(new TaskQueueInfo(TaskQueueInfo.STATE_JOB_FINISH));
-                mDisposableTimeout.dispose();
-                mDisposableClipboardTimeout.dispose();
-                mDisposable.dispose();
+                for (Disposable d : mDisposableList) {
+                    try {
+                        if (d != null) {
+                            d.dispose();
+                        }
+                    } catch (Exception ignored) {
+                    }
+                }
+
                 removeJobListener(this);
                 // 璋冪敤璁剧疆缁撴灉鎺ュ彛
                 RestAPI.getInstance().apiService()
@@ -241,9 +249,14 @@
             public void onFinished() {
                 extraState = 100;
                 sendUIMsg(new TaskQueueInfo(TaskQueueInfo.STATE_JOB_FINISH));
-                mDisposableTimeout.dispose();
-                mDisposableClipboardTimeout.dispose();
-                mDisposable.dispose();
+                for (Disposable d : mDisposableList) {
+                    try {
+                        if (d != null) {
+                            d.dispose();
+                        }
+                    } catch (Exception ignored) {
+                    }
+                }
                 removeJobListener(this);
                 // 璋冪敤璁剧疆缁撴灉鎺ュ彛
                 RestAPI.getInstance().apiService()
@@ -266,9 +279,14 @@
             @Override
             public void onPayCountLimit() {
                 extraState = 100;
-                mDisposableTimeout.dispose();
-                mDisposableClipboardTimeout.dispose();
-                mDisposable.dispose();
+                for (Disposable d : mDisposableList) {
+                    try {
+                        if (d != null) {
+                            d.dispose();
+                        }
+                    } catch (Exception ignored) {
+                    }
+                }
                 removeJobListener(this);
                 // 閫氱煡椤甸潰寮瑰嚭鏇存敼鏀粯瀹�
                 sendUIMsg(new TaskQueueInfo(TaskQueueInfo.STATE_PAY_COUNT_LIMIT));
@@ -327,6 +345,7 @@
 
     /**
      * 鑾峰彇瀛楁瘝杈撳叆閿洏锛堢畝鐗堬級
+     *
      * @param service
      * @param rootNodeInfoCompat
      * @return
@@ -363,6 +382,7 @@
 
     /**
      * 鑾峰彇瀛楁瘝杈撳叆閿洏
+     *
      * @param service
      * @param rootNodeInfoCompat
      * @return
@@ -396,7 +416,7 @@
             for (int i = 1; i < count; i++) {
                 AccessibilityNodeInfoCompat info = keyboardNode.getChild(i);
                 if (letters.length() > i) {
-                    lettersMap.put(String.valueOf(letters.charAt(i-1)), info);
+                    lettersMap.put(String.valueOf(letters.charAt(i - 1)), info);
                 }
             }
             return lettersMap;
@@ -463,7 +483,19 @@
         } else if (extraState == 2 && TextUtils.equals("com.alipay.android.msp.ui.views.MspContainerActivity", className)) {//eventType == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED
             extraState = 3;
             LogUtils.tag(TAG).i("鏀粯椤甸潰寮瑰嚭");
-        } else if (extraState == 3) {
+            //鍒ゆ柇鏄惁闀夸箙娌¤繘鍏ヤ笅涓�姝�
+            mDisposableList.add(Single
+                    .just(true)
+                    .delay(4, TimeUnit.SECONDS)
+                    .subscribe(aBoolean -> {
+                        if (extraState == 3) {
+                            LogUtils.tag(TAG).i("闀挎椂闂存病妫�娴嬪埌閿洏");
+                            // 鏀粯琚墜鏈哄畨鍏ㄤ繚鎶わ紝鏃犳硶鑾峰彇鍒拌妭鐐癸紝闇�瑕佸洖鍒版敮浠樺疂鐣岄潰鎵嶈兘閲嶆柊寮�鍚妭鐐�
+                            sendUIMsg(new TaskQueueInfo(TaskQueueInfo.STATE_PAY_SAFE_LIMIT));
+                        }
+                    }));
+        } else if (extraState == 3 || extraState == 31) {
+            extraState = 31;
             AccessibilityNodeInfoCompat btnConfirm = AccessibilityNodeInfoUtils
                     .getSelfOrMatchingAncestor(
                             service,
@@ -495,7 +527,7 @@
                         try {
                             for (int i = 0; i < businessPayPwd.length(); i++) {
                                 String k = businessPayPwd.charAt(i) + "";
-                                if(letterMap.get(k)==null){
+                                if (letterMap.get(k) == null) {
                                     throw new Exception("瀵嗙爜瀵瑰簲鐨勯敭鐩樺瓧姣嶆病鎵惧埌");
                                 }
                             }
@@ -511,23 +543,23 @@
                         } catch (Exception e) {
                             LogUtils.tag(TAG).e("浼佷笟鏀粯瀹濆瘑鐮佽緭鍏ュ嚭閿欙細" + e.getMessage());
                             // 閲嶆柊鏌ユ壘鏀粯瀹濋敭鐩�
-                            Map<String, AccessibilityNodeInfoCompat> allLettersMap =  getLetterKeyboard(service, rootNodeInfoCompat);
-                            if(allLettersMap!=null&&allLettersMap.size() >= 26){
-                                LogUtils.tag(TAG).i("鎵惧埌閿洏26涓瓧姣嶇粍鍚堬細"+allLettersMap.size());
+                            Map<String, AccessibilityNodeInfoCompat> allLettersMap = getLetterKeyboard(service, rootNodeInfoCompat);
+                            if (allLettersMap != null && allLettersMap.size() >= 26) {
+                                LogUtils.tag(TAG).i("鎵惧埌閿洏26涓瓧姣嶇粍鍚堬細" + allLettersMap.size());
                                 try {
                                     // 瓒呰繃26涓瓧姣�
                                     for (int i = 0; i < businessPayPwd.length(); i++) {
                                         letterMap.get(businessPayPwd.charAt(i) + "").performAction(AccessibilityNodeInfo.ACTION_CLICK);
                                     }
                                     LogUtils.tag(TAG).e("浼佷笟鏀粯瀹濆叏閿洏瀵嗙爜杈撳叆瀹屾垚");
-                                }catch(Exception ee){
+                                } catch (Exception ee) {
                                     LogUtils.tag(TAG).e("浼佷笟鏀粯瀹濆叏閿洏瀵嗙爜杈撳叆鍑洪敊锛�" + e.getMessage());
                                 }
                             }
                         }
                         extraState = 4;
                         LogUtils.tag(TAG).i("浼佷笟鏀粯瀹濆瘑鐮佽緭鍏ユ垚鍔�");
-                        Single
+                        mDisposableList.add(Single
                                 .just(true)
                                 .delay(5, TimeUnit.SECONDS)
                                 .subscribe(aBoolean -> {
@@ -540,7 +572,7 @@
                                         surePayBtn.performAction(AccessibilityNodeInfo.ACTION_CLICK);
                                         extraState = 5;
                                     }
-                                });// 浠诲姟鍚姩鍒版敮浠樺疂绮樿创鏉挎帹鑽愬脊鍑鸿秴鏃舵椂闂�
+                                }));// 浠诲姟鍚姩鍒版敮浠樺疂绮樿创鏉挎帹鑽愬脊鍑鸿秴鏃舵椂闂�
                         // 鑾峰彇纭鎸夐挳
                     }
                 } else {

--
Gitblit v1.8.0