Google地图似乎为其注册了大量的Intent,以及其他启动方法。除非/直到我真正需要它,否则它永远不会运行。但是,Android始终保持启动状态-例如,当连接状态发生变化(对我来说这在室内经常发生)或GPS /网络位置发生变化时。

是否有某种方法可以确保

环境:Droid X,运行根目录Froyo 2.2;请确保Google Maps不会启动任何进程,直到我单击一个图标故意启动它为止。我有自动启动功能。和Advanced Task Killer以及Pro版本的Titanium Backup已安装。

只要


可靠,我几乎可以接受任何方法。
我确实需要它,因此我可以使用具有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 Maps使用的所有Intent。

其次,我知道的唯一实用的方法是Autostarts应用程序,这不是可行的解决方案-大约需要5-10分钟才能找到并重新启用我知道的所有意图of(自动启动在按应用程序意图管理方面确实很差-它以按意图为中心),没关系自动启动不知道的可能意图(这是一个黑匣子,我不知道有没有遗漏了哪些意图。


有一个脚本可以重命名JAR或Android上的任何可执行文件(整个.APK?),例如从GoogleMaps.apkGoogleMaps.disabled.apk,然后返回。

问题:我不知道是否可以在植根的Froyo上执行此操作,而且,Google Maps已预先安装在DroidX上,因此重命名只会以某种方式影响更新,但不会影响原始应用程序?
有一个脚本可以进入APK并重命名/移动/清空清单文件,以删除该应用程序的任何意图。

问题:是否需要重新编译?重启这是减号



评论

请注意,我在问“是否有办法在需要之前永久关闭Google地图?”。我不是在问“我需要永久停止启动Google Maps吗?”,也不是“要使GMaps保持运行并保持良好电池寿命的解决方法是什么?”

“通过Titanium Backup Pro冻结。这需要重新启动并且通常不太舒服。”那很有意思。它适用于所有应用程序,还是仅适用于诸如Maps之类的嵌入式应用?

@Chance-我的印象是它适用于所有应用程序。

您实际尝试过吗?我以前使用Ti-Bu冻结应用程序,而不必重启。

@Chance-我冻结的应用程序直到重新启动后才停止重新生成到内存中。可能是我做错了-我最近才开始使用TBPro。

#1 楼

根据您提到的Titanium Backup,我认为您的设备已经植根。因此,我在这里的绝对建议是AutoRun管理器(是的,您将需要Pro-其次,这是值得的)。安装后,打开应用程序,使用“高级模式”,查找要修改的应用程序(在您的情况下:Google Maps)。展开它。 ARM将向您显示其所有侦听器-禁用它们。

就这样。除非您明确启动它,否则什么也不会唤醒它。但是:在开始之前,您可能需要再次启用这些侦听器,否则可能会遇到奇怪的副作用(我做到了)。另一方面,至少这不需要重新启动。

有关技术细节,您可能需要交叉询问“如何管理与应用程序的意图关联,或直接深入研究意图”部分AOSP开发人员手册。

#2 楼

首先,我建议您停止使用任务杀手。他们正在消耗您的电池,而不是节省电量。系统在需要运行服务时会重新启动服务,这会导致电池消耗。
其次,您认为释放内存是一件好事。它不是。释放内存不会减少电池消耗。您真正需要寻找的是使用大量CPU周期的应用程序。这将耗尽您的电池。
Android基于Linux。 Linux一直想使用所有可用的内存,因为可用内存是浪费的内存。 android系统将负责释放未使用的应用程序的内存,以便其他应用程序可以在需要时使用它。
即使您尝试杀死正在运行并占用内存的应用程序,系统也会重新启动这些应用程序服务/应用程序,这可能会导致电池消耗,因为它们可能在启动时会发生一些同步,或者仅仅是初始化应用程序所用的CPU周期。终止应用程序还会导致设备在尝试启动应用程序时显示缓慢,因为在向您提供应用程序用户界面之前,现在通常需要先运行某些可能正在运行的内容。
某些情况会导致电池消耗例如GPS,wifi,蓝牙和数据使用量将大大占用您的CPU来处理正在发送和接收的数据。不使用时将其关闭会节省大量电池电量。我的设备电池电量不足,它甚至无法充电超过94%,但是如果我在不需要这些服务时将其关闭,则可以将电池电量耗尽12小时或更长时间。
我一直在使用google maps,而在我的电池统计数据中,它甚至没有列为使用资源的应用程序。我的电池电量最高的用户是屏幕@ 31%,显示的电池电量最低的是GMail @ 3%。我可以向您保证,谷歌地图不是造成电池消耗的原因。使用任务杀手可能是原因。正如我所说的,我几乎每天都在使用google maps导航,而且甚至没有在使用电池的应用程序中排名前10位。 >
关于Android多任务处理的一个常见误解是流程与应用程序之间的差异。在Android中,这些不是紧密耦合的实体:对于用户而言,似乎没有当前正在运行该应用程序的实际进程的应用程序;多个应用程序可以共享进程,或者一个应用程序可以根据需要使用多个进程;即使该应用程序未在积极地执行某项操作,该应用程序的进程也可能会被保留。 。它可能只是存在,因为Android在某个时候需要它,并已决定最好保留它,以防再次需要它。同样,您可能会离开应用程序一小段时间,然后从上次中断的地方返回该应用程序,在此期间,Android可能需要摆脱其他事情的处理。这样就不会干净地关闭进程。当用户离开应用程序时,其过程将保留在后台,以便在需要时可以继续工作(例如下载网页),如果用户返回该应用程序,则会立即进入前台。如果设备永远不会用完内存,那么Android会保留所有这些进程,真正使所有应用程序始终“运行”。
当然,内存是有限的,为了适应这种情况,Android必须决定何时清除不需要的进程。这将导致Android的流程生命周期,以及用于决定每个流程的重要性的规则,从而决定下一个应该删除的流程。这些规则基于流程对于用户当前体验的重要性以及用户自上次需要该流程以来已经花费了多长时间。
一旦Android确定需要删除该流程,它残酷地这样做,只是强行杀死它。然后,内核可以立即回收该进程所需的所有资源,而不必依赖该应用程序的编写正确并响应有礼貌的退出请求。允许内核立即回收应用程序资源可以轻松避免严重的内存不足情况。
如果用户以后返回被杀死的应用程序,Android需要一种以相同状态重新启动它的方法。就像最后看到的那样,保留了“所有应用程序一直在运行”的体验。这是通过跟踪用户知道的应用程序部分(活动),并使用有关其被查看的最后状态的信息来重新启动它们的。每次用户离开该部分时都会生成此最后状态而不是杀死应用程序,以便内核以后可以自由地杀死它,而不必依赖应用程序在那时正确响应。空间:应用程序进程代表一定数量的使用中内存;当内存不足时,某些进程可以被杀死(交换掉);当再次需要这些进程时,可以从上次保存的状态(交换状态)重新启动它们。

这里还有另一篇文章,讨论了任务杀手如何消耗电池电量。

不要使用自动任务终止软件
长话短说,使用自动执行任务杀手可能会导致:电池电量过度消耗(好像手机没有足够快地耗尽电池电量),手机经常过热并且程序随机关闭(崩溃)–您需要进行编程实际要使用。远离这些!这实际上将从设备中删除该应用程序,并且与之关联的任何服务都不会启动,直到您取消冻结它为止。

评论


释放内存可使Droid X从缓慢的〜30-40 MB的速度缓慢爬行到合理的响应速度和超过70MB的快速响应速度,在任何情况下都没有应用占用CPU。抱歉,这是一个很好的理论,只是在实践中不适用。

–DVK
2012年2月1日在21:05



另外,当Android内存管理器杀死了我的网络浏览器,并失去了所有打开的选项卡以便为Google Maps腾出空间时,这对生产力产生了巨大影响。

–DVK
2012年2月1日在21:06

我告诉你,你正在经历的是安慰剂效应。可用内存不会使您的设备运行更快,可用CPU却可以。我还为您提供了有关任务杀手主题的另一参考(直接来自Google)

–瑞安·康拉德(Ryan Conrad)
2012年2月1日在21:16

使用任务杀手会导致工作流失,我在回答中解释了原因。最重要的是,如果您阅读了完整的答案,我将通过冻结应用程序为您使用钛的问题提供确切的答案。

–瑞安·康拉德(Ryan Conrad)
2012年2月1日在21:20

@Chance否,因为如果您杀死当时未实际运行的进程,则系统最终将不得不启动该进程的备份,并且它将进行“所有初始化”,这将使用CPU。仅仅因为一个进程正在运行,并不意味着它当时实际上在做任何事情。

–瑞安·康拉德(Ryan Conrad)
2012年2月7日在20:17

#3 楼

您是否考虑过卸载和重新安装地图作为可能的解决方案?



首先,通过删除/system/app/Maps.apk文件来摆脱预加载的地图:

su  
rm /system/app/Maps.apk


一旦系统应用程序被更新,它在/ system / app文件夹中就无用了,可以安全地删除。然后将当前的Maps版本复制到您的SD卡中:

cp /data/app/com.google.android.apps.maps*.apk /sdcard/



现在卸载Maps应用程序: >
“ -k”开关保留重新安装应用程序时的设置。


现在要恢复地图,只需从备份中重新安装即可:

pm uninstall -k com.google.android.apps.maps



您可以通过GScript自动执行这些步骤,该脚本允许您创建脚本的快捷方式。因此,只需使用第3步中的命令创建一个名为“ Disable Maps”的脚本,并使用第4步中的命令创建另一个名为“ Enable Maps”的脚本(请同时选中“ Needs SU?”)。 >现在,您可以从使用Android常规的“添加快捷方式”方法创建的脚本中向主屏幕添加2个GScript快捷方式(GScript将是其中的选项之一。)

唯一的缺点这样做的方法是,您很可能在卸载时从主屏幕上丢失“地图”快捷方式(和/或小部件),需要您在重新安装后重新添加。您当然仍然可以从应用程序抽屉中启动地图。

评论


在我的DroidX上预先安装了Maps会对这一过程产生负面影响吗?还是那个不在ROM中? +1是个绝妙的主意!

–DVK
2012年2月1日在21:28



如果您不先删除APK的系统版本,则卸载将失败。通常,一旦系统应用从Market获得更新,就可以安全地删除/ system / app /文件夹中的相应APK。

–Chahk
2012年2月1日在21:33

@Chank-我认为这不是Verizon的bloatware,实际上只要我有root用户,我就有权删除系统版本? :)

–DVK
2012年2月1日在21:39



只要您的手机已扎根,您就可以轻松从/ system / app删除Maps.apk。

–Chahk
2012年2月2日,2:16

#4 楼

从Android 4.0 Ice Cream Sandwich开始,您只需在系统设置中禁用Google Maps。如果您仍然坚持使用Froyo,这将无济于事,但其他人可能会从中受益。

评论


是否禁用所有相关服务? (通用汽车和谷歌纵横等)?

–DVK
2012年12月27日19:33

它会完全禁用该应用程序,包括它带来的所有功能。据我所知,这包括导航,纬度等。

–迈克尔·汉普顿
2012-12-27 19:36

#5 楼

我建议使用“钛合金”备份主页市场链接的“冻结”功能。我相信您必须先注册该应用程序(6.58美元)才能使用该功能,但是我向您保证,如果您想破解手机,这是值得的。付费购买该应用程序的另一个主要原因(除了支持开发人员编写精美的免费软件外)是能够批量安装(即从备份还原)已备份的应用程序和数据。否则,您必须通过标准的应用程序安装对话框。

有关冻结的网站:
无需卸载


,或者您实际上可以卸载并重新安装。您可能会发现有理由这样做是因为冻结,我不知道。

评论


抱歉,但这没有帮助。在我的问题中,“我尝试过的事情”下的要点3:“通过Titanium Backup Pro冻结。这需要重新启动并且通常不太舒服。”

–DVK
2012年2月7日在18:12



#6 楼

如果您的手机具有Settings > Applications > Development > Stop app via long-press选项,则您始终可以通过这种方式关闭Google Maps,直到再次打开该应用程序,该过程也会被终止。

#7 楼

根您的手机,然后使用Google Play中的“自动启动”应用来禁用所有触发地图的事件。手动启动时,它将运行良好,但是当您杀死它时,它将消失。在启动后事件文件夹中禁用不需要的其他功能,以进一步减少内存消耗。

评论


您是否仔细阅读了该问题?它明确指出:第二,我知道的唯一可行的方法是Autostarts应用程序,这不是可行的解决方案-大约需要5-10分钟才能找到并重新启用我知道的所有意图(在按应用程序意图管理方面确实很差-它以按意图为中心),没关系自动启动不知道的可能意图(这是一个黑匣子,我不知道会丢失哪些意图)。

–DVK
2012年12月27日在18:40