Shadowrocket 背景耗電排查:On Demand 按需連線要不要開?

瞭解 Shadowrocket 背景耗電原因,比較 On Demand 與手動連線,並查看 iPhone 電池用量及調整觸發條件。

本文重點

On Demand 用來設定自動建立連線的條件,不是省電開關,也不代表所有流量都會經過代理。若需要在網路切換後自動恢復連線,可以保留 On Demand 並確認觸發條件;若只在固定時段使用,則可關閉後手動連線。本文適合遇到背景耗電占比升高、斷線後又重新連線,或鎖定螢幕期間持續活動的使用者,可依系統電池記錄、連線狀態與請求記錄逐步縮小問題範圍。

先釐清 On Demand、隧道與實際流量

Shadowrocket(小火箭)的主畫面切換至背景後,系統 VPN 隧道仍可能繼續處理請求。返回 Home 主畫面、鎖定螢幕,或從多工畫面移除 App,都不能直接證明隧道已停止。若要確認是否仍在連線,請回到 Shadowrocket 的 Home 查看狀態,並核對系統設定中的 VPN 狀態。

On Demand 負責觸發連線,Global Routing 負責處理流量。啟用 On Demand 後,系統可在符合目前按需規則時嘗試建立連線;它不是「偵測到流量就只運作一下」的計時機制,也不保證閒置時一定會中斷。連線是否持續或再次建立,須依實際規則與網路環境判斷。

符合網路條件 系統建立隧道 App 發出請求 路由處理請求 連線傳輸資料

耗電可能來自隧道中的資料處理、加密傳輸、DNS 查詢、失敗重試,也可能與發出請求的背景 App 及無線網路本身有關。即使沒有開啟網頁,照片同步、收取郵件或其他 App 的背景活動仍可能產生網路請求。因此,系統將部分活動列在 Shadowrocket 名下,並不能單獨證明問題出在 On Demand。

依使用情境選擇自動常駐或手動連線

本文所說的「常駐」,是指希望隧道保持可用,並在中斷後依條件恢復的使用方式,不是 On Demand 中獨立的省電模式。關閉 On Demand 只會取消相應的自動連線行為,不代表已建立的隧道必然會同時中斷;若要停止連線,還須在 Home 主動中斷並確認狀態。

設定方式 適用需求 需確認的情況
啟用 On Demand 需要在符合條件時自動建立或恢復連線。 切換 Wi-Fi 或行動網路後,是否頻繁重新連線。
關閉 On Demand,改為手動連線 只在特定工作時段或執行任務期間使用。 使用完畢後是否確實中斷,下次是否記得重新連線。
啟用 On Demand,縮小適用條件 只有部分網路環境需要自動連線。 目前頁面提供的網路類型或網路比對條件,是否涵蓋了不需要連線的環境。

自動連線不一定比手動連線耗電。如果兩種方式最後都維持同一條隧道、處理相同請求,單看開關狀態無法推論耗電差異。真正值得比較的是總連線時間、自動重新連線次數,以及是否連不需要連線的閒置時段也一併納入處理。

結論:先決定哪些時段需要連線

若每天只有固定一段時間需要連線,可先用手動連線建立基準;若必須自動恢復,則保留 On Demand,優先檢查觸發範圍與重新連線原因,不要直接更換協定。

從系統電池頁面建立可比較的記錄

在 iPhone 或 iPad 開啟系統「設定 → 電池」,查看頁面目前提供的時間範圍、電量曲線與 App 活動記錄。系統版本不同,時間範圍和展開項目的名稱可能有所差異,請以裝置實際顯示為準。選取相同時段,再比較 Shadowrocket 與其他 App 的活動,避免將全天資料與短時間測試混為一談。

  1. 記錄測試起迄條件。記下開始時間、電量、是否充電、使用 Wi-Fi 或行動網路,以及訊號是否穩定。開啟個人熱點、導航、視訊通話等會明顯改變負載的工作,也要一併記錄。
  2. 比對電量與活動情形。觀察電量下降主要發生在螢幕使用期間,還是在鎖定螢幕時持續發生。若系統提供背景活動時間,也一併記錄,但不要直接解讀為處理器一直處於滿載狀態。
  3. 確認連線狀態。在測試開始與結束時查看 Home,記錄隧道是否已連線。若期間切換網路或手動中斷,請記下時間,方便對照系統電池曲線。
  4. 重複相同情境。例如安排兩段各 60 分鐘的觀察時段,維持相同網路、近似的螢幕使用量與相同設定,只改變 On Demand 或連線方式。這裡的 60 分鐘是記錄方案,不是產品續航數據。
2 處
交叉比對系統「設定 → 電池」與 Shadowrocket Home
1 項
每輪只改一項設定,其餘連線條件維持一致
60 分鐘
觀察時段範例:兩組使用相同時間,不代表實測結果

電池頁面中的 App 百分比,是所選時段內的耗電占比,不能直接解讀為「這個 App 用掉了整顆電池相同比例的電量」。其他 App 活動減少時,Shadowrocket 的占比可能上升,但裝置實際耗電量未必增加。應一併觀察電量曲線、實際掉電量與活動時段;差異不大時需重複觀察,不能只憑單次記錄下結論。

依序調整 Settings → On Demand

進入 Shadowrocket 的 Settings → On Demand,先確認目前是否啟用,再查看頁面實際提供的規則或網路比對條件。不同 App 介面與系統環境下,可用選項可能不同;不必為了照搬教學而尋找不存在的開關,也不要直接填入某個 Wi-Fi 名稱當作通用範例。

  1. 先建立手動連線基準。關閉 On Demand,回到 Home 主動中斷連線。確認狀態已不再連線後,在不需要連線的時段觀察耗電是否仍維持相近程度。
  2. 接著測試手動連線。維持 On Demand 關閉,在 Home 手動連線至原有設定,執行與平常相同的任務。若此時耗電也明顯增加,應繼續檢查請求負載與網路狀況,而非只歸因於自動連線。
  3. 恢復自動觸發。若確實需要自動恢復,請重新啟用 On Demand;若頁面提供 Wi-Fi、行動網路或網路比對條件,只保留實際需要的範圍。修改後分別在對應網路下確認。
  4. 確認中斷與恢復行為。在可控制的情況下切換一次網路,觀察 Home 是否如預期恢復連線。測試完成後不要持續反覆切換網路,因為這本身會增加建立連線的次數。

「中斷後立刻又連線」首先是觸發行為的線索,不能直接據此判定耗電原因。若 On Demand 仍啟用,且目前網路仍符合條件,系統可能再次建立連線。若要觀察真正未連線的狀態,請先關閉按需連線,再主動中斷;只是不斷點按 Home 的連線開關,可能會一直觸發重新連線。

背景持續活動時,檢查請求與失敗重試

如果相同任務下,手動與自動連線都出現大量背景活動,接下來應檢查「隧道正在處理什麼」。在 App 目前提供的請求記錄或日誌頁面中,依觀察時段核對時間、目標與失敗資訊。先記錄少數相關項目即可,不必長時間開啟詳細日誌;記錄日誌本身也會增加記錄與儲存作業。

錯誤:Connection timed out

原因:連線未能在允許的等待時間內完成,可能與目前網路、目標位址或連線參數有關;單次逾時不足以證明問題出在 On Demand。

處理方式:確認同一時段是否連續發生逾時,並在穩定網路下使用原有設定重試一次;若仍失敗,請向自己的服務提供者確認既有連線資料,並避免持續重複測試。

上方的錯誤提示卡僅供日誌實際出現相同原文時辨識,不代表所有失敗都會顯示相同訊息。如果 Home 顯示 Not Connected,那首先代表連線狀態,並不等於已指出失敗原因;需搭配連線嘗試時間與日誌判斷,不能把狀態文字當成具體錯誤訊息。

區分路由模式與協定,再決定最終設定

Home 中的 Global Routing 與 On Demand 是兩種不同設定。Global Routing 的 Proxy、Direct、Config、Scene,應依 App 內說明與目前設定核對;其中 Direct 不等同於關閉系統 VPN 隧道。排查耗電時,若要比較「已連線」與「未連線」,應確實中斷連線,而不是只切換為 Direct。

使用 Config 時,請在 Config 中檢查目前啟用檔案的 Rule。DOMAIN-SUFFIX、GEOIP、IP-CIDR 等規則會依設定順序進行比對,末尾的 FINAL 則為前面未比對到的請求指定策略。流量導向的策略可能影響連線路徑,但不能單憑規則項目數量推論續航表現。

結論:依可重現的現象選擇,不要只看單一百分比

若只在固定時段需要連線,請改用手動連線,並在使用完畢後中斷;若需要自動恢復,則保留 On Demand 並確認比對條件。只有在相同網路、相同任務下重複觀察到差異,才將調整後的方式設為長期設定。

App Store 下載