題:
有沒有辦法在需要之前永久關閉Google地圖?
DVK
2012-02-02 02:30:56 UTC
view on stackexchange narkive permalink

Google地圖似乎為其註冊了大量的Intent,以及其他啟動方式。

由於這是一個非常耗資源的應用程序(尤其是內存方面的應用程序),我會非常非常希望它永久不運行,除非/直到我真正需要它為止。但是,Android始終保持啟動狀態-例如,當連接狀態發生變化(對我來說這在室內經常發生)或GPS /網絡位置發生變化時。

是否有某種方法可以確保Google在我單擊一個圖標故意啟動之前,Maps不會啟動任何進程嗎?

環境:Droid X,運行根目錄的Froyo 2.2;我有自動啟動

只要是可靠的

  • ,我幾乎可以接受任何方法。

  • 它使我一經需要就可以使用具有100%預期功能的Google Maps,而無需進行5分鐘的重新配置。

  • 理想情況下,不需要我重新啟動即可使用它,但這不是交易殺手。

  • 我強烈希望使用一種通用方法,該方法可以將會適用於其他應用程序,而不僅是Google Maps。

  • 我是一位具有大量Unix / Linux系統管理經驗的軟件開發人員。換句話說,非常需要需要shell提示或編寫/運行shell腳本(或Android Scripting Environment中的Perl)的解決方案。

    涉及到編寫我自己的Java Android應用程序的解決方案是可以接受的,只要這些解決方案足夠詳細,而整個Android開發新手可以完成至少一些工作而不會100%丟失。

我嘗試過的事情:

  • 通過Task Killer殺死進程無法正常工作-它們立即恢復運行或一會兒可能是通過Intents進行的,但不是100%確定。

  • 擺脫GMaps問題的標準方法(退出“緯度/關閉GPS和網絡定位器”)。這似乎有很大幫助,但我發現永久關閉GPS /定位器的需求是不可接受的-例如它不會讓我運行Locale應用程序或基於Locale的Tasker。

  • 通過Titanium Backup Pro凍結。

我想到的可能方法(但不知道如何做)是:

  • 以某種方式完全消除(關閉)不需要時由Google Maps註冊的所有Intent。

    問題:首先,我不知道Google的所有Intent地圖用途。

    第二,我知道的唯一實用的方法是Autostarts應用程序,這不是可行的解決方案-需要大約5-10分鐘的時間才能找到並重新啟用所有意圖 I知道(自動啟動在按應用程序意圖管理方面確實很差-它集中於每個意圖),不要介意自動啟動不知道的可能意圖(這是一個黑匣子,我不知道哪個意圖

  • 具有一個腳本,該腳本將重命名JAR或Android上的任何可執行文件(整個.APK?),例如 GoogleMaps.apk GoogleMaps.disabled.apk 並返回。

    問題:我不知道是否可以在紮根的Froyo上進行。此外,Google Maps之前是-已安裝在DroidX上,因此重命名只會以某種方式影響更新,但不會影響原始應用程序嗎?

  • 是否具有將進入APK並重命名/移動/清空清單的腳本文件以刪除該應用程序的任何意圖。

    問題:這是否需要記錄卑鄙的絕對需要重新啟動,這是負的

請注意,我在問“是否有辦法在需要之前永久關閉Google地圖?”。我不是問“我是否需要**永久停止啟動谷歌地圖?”或“什麼是可以繼續運行GMaps並保持良好電池壽命的解決方法”。
“通過Titanium Backup Pro凍結。這需要重新啟動並且通常不太舒服。”那很有意思。它適用於所有應用程序,還是僅適用於諸如Maps之類的嵌入式應用程序?
@Chance-我的印像是它適用於所有應用程序。
您實際嘗試過嗎?我以前使用Ti-Bu凍結應用程序,而不必重啟。
@Chance-我凍結的應用程序直到重新啟動後才停止重新生成到內存中。可能是我做錯了-我最近才開始使用TBPro。
嗯,很好。我知道我凍結了“軟件更新”,但仍然不得不將其殺死,但是我認為它不會重新產生。即使那樣,如果要經常進行,那將是一個兩步過程,可能會很痛苦。
七 答案:
Ryan Conrad
2012-02-02 03:03:11 UTC
view on stackexchange narkive permalink

首先,我建議您停止使用任務殺手。他們消耗的電量多於節省電量。系統會在需要運行服務時重新啟動服務,這會導致電池消耗。

第二,您假設釋放內存是一件好事。它不是。釋放內存不會減少電池使用量。您真正需要尋找的是使用大量CPU週期的應用程序。這將耗盡您的電池。

Android基於Linux。 Linux一直想使用所有可用的內存,因為可用內存是浪費的內存。 android系統將負責釋放未使用的應用程序的內存,以便其他應用程序在需要時可以使用它。

即使您嘗試殺死正在運行並佔用內存的應用程序,系統也會請重新啟動這些服務/應用程序,這可能會導致電池消耗,因為它們可能在啟動時會發生一些同步,或者只是用於初始化應用程序的CPU週期。終止應用程序還會導致設備在嘗試啟動應用程序時顯示緩慢,因為在向您提供應用程序用戶界面之前,現在需要先備份通常可能正在運行的某些東西。

某些事情會導致GPS,WiFi,藍牙等電池電量耗盡,並且數據使用量將大量佔用您的CPU來處理正在發送和接收的數據。不使用時將其關閉會節省大量電池電量。我的設備電池電量不足,它甚至無法充電超過94%,但是如果我在不需要這些服務時將其關閉,則可以節省12個小時或更長時間。

我一直都在使用google maps,而在我的電池統計中,它甚至沒有列為使用資源的應用程序。我電池電量最高的用戶是屏幕@ 31%,顯示的電池電量最低的是GMail @ 3%。我可以向您保證,谷歌地圖不是造成電池消耗的原因。使用任務殺手更可能是原因。正如我所說的,我幾乎每天都使用google maps導航,而且甚至不在使用電池的應用程序的前10名中。

Google Android有關任務殺手的詳細信息開發者博客

關於Android多任務處理的一個常見誤解是流程和應用程序之間的差異。在Android中,這些不是緊密耦合的實體:對於用戶而言,似乎沒有當前正在運行該應用程序的實際進程的應用程序;多個應用程序可以共享進程,或者一個應用程序可以根據需要使用多個進程;即使該應用程序未在積極地做某事,該應用程序的進程也可能被Android保留。

您可以看到應用程序的進程“正在運行”這一事實並不意味著該應用程序正在運行或做任何事情。它可能只是存在,因為Android在某個時候需要它,並決定最好保留它,以防再次需要它。同樣,您可能會離開應用程序一小段時間,然後從上次停止的地方返回該應用程序,在此期間,Android可能需要擺脫其他原因的處理。

如何操作的關鍵Android以這種方式處理應用程序是因為進程無法完全關閉。當用戶離開應用程序時,其過程將保留在後台,以便在需要時可以繼續工作(例如下載網頁),如果用戶返回該應用程序,則會立即進入前台。如果設備永遠不會用完內存,那麼Android會保留所有這些進程,真正使所有應用程序始終“運行”。

當然,內存是有限的,為了適應這一點,Android必須決定何時清除不需要的進程。這導致了Android的流程生命週期,即用於決定每個流程的重要性的規則,從而決定了應該刪除的下一個流程。這些規則基於流程對用戶當前體驗的重要性以及自用戶最後一次使用該流程以來已經花費了多長時間。

一旦Android確定需要刪除該流程一個過程,它會殘酷地執行此操作,只需強行殺死它即可。然後,內核可以立即回收該進程所需的所有資源,而不必依賴該應用程序的編寫正確並響應有禮貌的退出請求。允許內核立即回收應用程序資源使避免嚴重的內存不足情況變得容易得多。

如果用戶以後返回被殺死的應用程序,Android需要一種方法來重新啟動它與上次看到的狀態相同,以保留“所有應用程序一直在運行”的體驗。這是通過跟踪用戶知道的應用程序部分(活動),並使用有關其被查看的最後狀態的信息來重新啟動它們的。每次用戶離開該部分時都會生成此最後狀態。而不是在應用程序被殺死時進行處理,以便內核以後可以自由地將其殺死,而不必依賴應用程序在那時正確響應。

在某些方面,Android的進程管理可以看作是交換空間的形式:應用程序進程代表一定數量的使用中內存;當內存不足時,某些進程可以被殺死(交換掉);當再次需要這些進程時,可以從上次保存的狀態(交換過來)重新啟動它們。

這裡還有另一篇文章,討論了任務殺手如何消耗電池電量。 p>

請勿使用自動任務終止軟件
長話短說,使用自動執行任務殺手可能會導致:電池電量過度消耗(好像手機沒有足夠快地耗盡電池電量),手機經常過熱並且程序隨機關閉(崩潰)–您需要進行編程實際要使用。遠離這些!

如果您真的要在“停止地圖”上設置,直到要使用它,您可以做的一件事就是在鈦金備份中使用“凍結”選項。從本質上講,這將從設備中刪除該應用程序,並且與之關聯的任何服務都不會啟動,直到您取消凍結它為止。

釋放內存可使Droid X從緩慢的〜30-40 MB的自由爬行到合理的響應速度和超過70MB的快速爬行,在任何情況下都沒有應用佔用CPU。抱歉,這是一個很好的理論,只是在實踐中不適用。
此外,當Android內存管理器殺死我的網絡瀏覽器,並失去所有打開的選項卡來為Google Maps騰出空間時,這對生產力產生了很大的影響。
抱歉,我對此表示反對。它包含一堆我確實知道的無關信息,以及與解決我所提出的特定技術問題有關的零信息(無論我出於何種原因而停止啟動某個特定應用程序)
順便說一句,每天手動(或按計劃每2-3小時一次)使用任務殺手絕對不會造成資源消耗。我測量了。
我告訴你,你正在經歷的是安慰劑效應。可用內存並不能使設備運行得更快,可用CPU卻可以。我還為您提供了有關任務殺手主題的其他參考(直接來自Google)
使用任務殺手會導致工作流失,我在回答中解釋了原因。最重要的是,如果您閱讀了完整的答案,我將通過凍結應用程序為您使用鈦的問題提供確切的答案。
在過去的1.5年所有權中,有100項殺人事件與100%相關。我很高興您有一個理論來解釋為什麼它不起作用,但這並不排除存在其他因果關係而不是您排除的因果關係的可能性。我只是具有相關性的人:)
至於鈦備份-我已經在“我嘗試過的東西”下將其列為第三個要點。同上關閉GPSy的東西-這是第二個要點。如我所說,您的答案包含零個新的有用信息-它回答了我沒有問的問題。我正在尋找不需要重啟的替代方法-理想情況下是與操縱文件系統或底層操作系統有關。我的意思是,我選擇Android而不選擇iBlackBox是有原因的:)
@RyanConrad,我正試圖更好地理解這些東西。有人可以說Task Killer應用程序確實確實可以通過殺死使用CPU週期的應用程序來間接幫助嗎?
@Chance否,因為如果您殺死當時未實際運行的進程,則係統最終將不得不備份該進程,並且它將進行“所有初始化”,這將使用CPU。僅僅因為一個進程正在運行,並不意味著它實際上在當時正在做任何事情。
@RyanConrad,您要查找的詞是“確認偏見”。安慰劑效應是可以起作用的真實事物。因為我們的*聰明*和我們的*肉*不是彼此隔離的。
Chahk
2012-02-02 03:27:12 UTC
view on stackexchange narkive permalink

您是否考慮過卸載和重新安裝地圖作為一種可能的解決方案?

  1. 首先,通過刪除 /來擺脫預先加載的地圖system / app / Maps.apk 文件:

      su rm /system/app/Maps.apk 

    系統應用程序更新後,它在/ system / app文件夾中沒有用,可以安全地刪除。

  2. 然後將當前Maps版本複製到SD卡中:

      cp /data/app/com.google.android.apps.maps*.apk / sdcard /  
  3. 現在卸載Maps應用:

      pm卸載-k com.google.android.apps.maps  

    “-k”開關保留重新安裝應用程序時的設置。

  4. 現在可以從備份中重新安裝地圖了:

      pm install -r /sdcard/com.google.android.apps。 maps * .apk  
  5. ol>

    您可以通過 GScript自動執行這些步驟,從而可以創建腳本的快捷方式。因此,只需使用第3步中的命令創建一個名為“ Disable Maps”的腳本,並使用第4步中的命令創建一個名為“ Enable Maps”的腳本(都選中“ Needs SU?”)。現在,您可以從使用Android常規的“添加快捷方式”方法創建的腳本中向主屏幕添加2個GScript快捷方式(GScript是其中的一種選擇。)

    此方法的唯一缺點是表示您很可能在卸載時從主屏幕上丟失了Maps快捷方式(和/或小部件),需要您在重新安裝後重新添加。當然,您仍然可以從應用程序抽屜中啟動地圖。

在我的DroidX上預先安裝了Maps會對這一過程產生負面影響嗎?還是那個不在ROM中? +1是個絕妙的主意!
如果您不先刪除APK的系統版本,則卸載將失敗。通常,一旦系統應用從Market獲得更新,就可以安全地刪除/ system / app /文件夾中其對應的APK。
@Chank-我認為,這不是Verizon的過分軟件,實際上,只要我有root用戶,就可以刪除系統版本嗎? :)
只要您的手機已紮根,您就可以輕鬆從/ system / app刪除Maps.apk。
Izzy
2012-07-13 19:43:12 UTC
view on stackexchange narkive permalink

根據您提到的Titanium Backup,我認為您的設備已經植根。因此,我在這裡的絕對建議是 AutoRun Manager(是的,您將需要Pro-第二個,這是值得的)。安裝後,打開應用程序,使用“高級模式”,查找要修改的應用程序(在您的情況下:Google Maps)。展開它。 ARM將向您顯示其所有偵聽器-禁用它們。

就是這樣。除非您明確啟動它,否則什麼也不會喚醒它。但是:在開始之前,您可能需要再次啟用這些偵聽器,否則可能會遇到奇怪的副作用(我做到了)。另一方面,至少這不需要重新啟動。

有關技術細節,您可能想對問題我如何管理與應用程序的意圖關聯進行交叉檢查,或者直接進入AOSP開發人員手冊的意圖部分

Michael Hampton
2012-12-28 01:03:50 UTC
view on stackexchange narkive permalink

從Android 4.0 Ice Cream Sandwich開始,您只需在系統設置中禁用Google Maps。如果您仍然堅持使用Froyo,這將無濟於事,但其他人可能會從中受益。

是否禁用所有相關服務? (通用汽車和谷歌縱橫等)?
它會完全禁用該應用程序,包括它帶來的一切。據我所知,這包括導航,緯度等。
halr9000
2012-02-08 00:08:12 UTC
view on stackexchange narkive permalink

我建議使用Titanium備份主頁 市場鏈接的凍結功能。我相信您必須先註冊該應用程序(6.58美元)才能使用該功能,但是我向您保證,如果您想破解手機,這是值得的。付費購買該應用程序的另一個主要原因(除了支持開發人員編寫精美的免費軟件外)是能夠對已備份的應用程序和數據進行批量安裝(即從備份還原)。否則,您必須通過標準的應用程序安裝對話框。安裝

,或者您實際上可以進行卸載並重新安裝。您可能會發現有理由這樣做是因為凍結,我不知道。

抱歉,但這沒有幫助。在我的問題中,“我嘗試過的事情”下的要點3:“通過Titanium Backup Pro凍結。這需要重新啟動並且通常不太舒服。”
Dielson Sales
2013-05-14 06:56:00 UTC
view on stackexchange narkive permalink

如果您的手機具有設置>應用程序>開發>通過長按停止應用程序選項,則您始終可以通過這種方式關閉Google Maps,然後該過程也會被終止,直到您打開再次應用。

MeHere
2012-12-28 00:20:28 UTC
view on stackexchange narkive permalink

啟動手機,然後使用Google Play中的“自動啟動”應用程序禁用所有觸發地圖的事件。手動啟動時,它將運行良好,但是當您殺死它時,它將消失。在啟動後事件文件夾中禁用不需要的其他功能,以進一步減少內存消耗。

您是否仔細閱讀了該問題?它明確指出:`其次,我知道的唯一實用的方法是Autostarts應用程序,這不是可行的解決方案-大約需要5-10分鐘才能找到並重新啟用我知道的所有意圖(在按應用程序意圖管理方面真的很差-它以按意圖為中心),不用擔心自動啟動不知道的可能意圖(這是一個黑匣子,我不知道會丟失哪些意圖)。


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...