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