必要になるまでGoogleマップを完全にオフにする方法はありますか?


24

Googleマップには、非常に多くのIntentが登録されているようです。また、他の開始方法もあります。

これはかなりリソースを消費するアプリであるため(特にメモリに関して)、実際に必要になるまで、または実際に必要になるまで、永続的に実行しないようにしたいです。ただし、Androidは常に接続を開始し続けます。たとえば、接続状態が変わったとき(屋内ではかなり頻繁に発生します)、GPS /ネットワークの場所が変わったときなどです。

アイコンをクリックして意図的に起動するまで、Google Mapsがどのプロセスも開始しないことを保証する方法はありますか?

環境:Droid X、根付き株Froyo 2.2を実行。私が持って自動的に起動します。Advanced Task Killer、およびインストールされているTitanium BackupのProバージョン。

私はほとんどすべての方法にかなりオープンです

  • 信頼できます。

  • 再構成に5分間の作業を必要とせずに、必要に応じて100%の目的の機能を備えたGoogleマップを使用できます。

  • 理想的には、それを使用するためにリブートする必要はありませんが、これは契約キラーではありません。

  • Googleマップだけでなく、他のアプリケーションにも適用できる一般的な方法を強く希望します。

  • 私はUnix / Linuxシステム管理の経験が豊富なソフトウェア開発者です。つまり、シェルプロンプトまたはシェルスクリプトの作成/実行(またはAndroid Scripting EnvironmentのPerl)を必要とするソリューションは非常に歓迎されます。

    独自のJava Androidアプリの作成を伴うソリューションは、Android開発初心者が100%失われることなく少なくともある程度の作業を完了することができるほど十分に詳細である限り許容されます。

私が試したもの:

  • Task Killerを介したプロセスの強制終了は機能していません-すぐに、またはしばらくしてから再開します。おそらくインテント経由ですが、100%確実ではありません。

  • GMapsの問題を取り除くための標準的な方法(Latitudeからログアウトする/ GPSとネットワークロケーターをシャットダウンする)。これは大いに役立つようですが、GPS /ロケーターを完全にシャットダウンする必要は受け入れられないように感じます。たとえば、ロケールアプリやロケールベースのTaskerを実行できません。

  • Titanium Backup Proを使用してフリーズします。これには再起動が必要で、一般的にあまり快適ではありません。

私が考えた可能性のあるアプローチ(しかし、方法がわからない)は次のとおりです。

  • どういうわけか、不要なときにGoogleマップによって登録されたすべてのインテントを完全に削除(オフ)します。

    問題:最初に、Googleマップが使用するすべてのインテントがわからない。

    第二に、私が知っている唯一の実用的な方法は、実用的なソリューションではない自動起動アプリです- 私が知っているすべてのインテント見つけて再度有効にするのに〜5-10分かかります(自動起動は本当に貧弱です-アプリのインテント管理-インテントごとに集中しています)、自動起動が知らないインテントを気にしないでください(ブラックボックスで、どのインテントが見逃されているかわかりません)

  • JARファイルの名前を変更するか、Android上で何でも実行可能ファイルが言うから(全体の.apk?)されますスクリプト持ちGoogleMaps.apkGoogleMaps.disabled.apkして背中を。

    問題:これがルート化されたFroyoで実行できるかどうかわかりません。また、GoogleマップはDroidXにプリインストールされているので、名前の変更は何らかの形でアップデートにのみ影響し、元のアプリには影響しませんか?

  • APKに移動し、マニフェストファイルの名前を変更/移動/空にするスクリプトを用意して、そのアプリのインテントを削除します。

    問題:これには再コンパイルが必要ですか?必ずマイナスの再起動が必要です


2
「必要になるまでGoogleマップを完全にオフにする方法はありますか」と尋ねていることに注意してください。「Googleマップの起動を完全に停止する必要がありますか?」や「GMapsを実行し続け、バッテリー寿命を維持するための回避策は何ですか?」
DVK

「Titanium Backup Proを使用してフリーズします。これには再起動が必要で、通常はあまり快適ではありません。」それは面白い。それはすべてのアプリに対して実行されますか、それともMapsなどの埋め込み型のものに対してのみ実行されますか?
チャンス

@Chance-私の印象は、すべてのアプリ用だということでした。
DVK

3
実際に試してみましたか?以前にTi-Buを使用してアプリをフリーズしたことがあり、再起動する必要はありませんでした。
チャンス

@Chance-フリーズしたアプリは、再起動するまでメモリへの再スポーンを停止しませんでした。間違っていたのかもしれません-最近TBProを使い始めたばかりです。
DVK

回答:


5

Titanium Backupについて言及したことから、デバイスがルート化されていると思います。したがって、ここでの絶対的な推奨事項はAutoRun Managerです(そして、はい、Proが必要になります。2番目のはい、それは価値があります)。それをインストールしたら、アプリを開き、「アドバンスモード」を使用して、変更するアプリを探します(あなたの場合:Googleマップ)。それを展開します。ARMはすべてのリスナーを表示します-無効にします。

それでおしまい。明示的に起動しない限り、何も起こさなくなります。しかし、開始する前に、それらのリスナーを再度有効にする必要があるか、奇妙な副作用が発生する可能性があります(私はそうしました)。反対側では、少なくともこれは再起動を必要としません。

技術的な詳細については、次の質問をクロスチェックすることをお勧めします、私はアプリで目的の関連付けを管理することができますどのように、あるいは直接に飛び込むAOSPの開発者向けマニュアルのインテントセクション


16

まず、タスクキラーの使用を停止することをお勧めします。彼らはそれを保存するよりもあなたのバッテリーを使い果たしています。システムは、サービスを実行する必要があるときにサービスを再起動しているため、バッテリーが使用されています。

第二に、メモリを解放することは良いことであるという仮定の下にあります。そうではない。メモリを解放しても、バッテリーの使用量は減りません。本当に探す必要があるのは、多くのCPUサイクルを使用するアプリです。これはあなたのバッテリーを消耗させるものです。

AndroidはLinuxに基づいています。空きメモリは無駄なメモリであるため、Linuxは常に利用可能なすべてのメモリを使用したいと考えています。Androidシステムは、使用されていないアプリケーションのメモリを解放し、必要に応じて他のアプリケーションが使用できるようにします。

実行中のメモリを使用しているアプリケーションを削除しようとしても、システムはこれらのサービス/アプリを再起動します。これにより、起動時に何らかの同期が発生するか、使用されるCPUサイクルのみが発生するため、バッテリーが消耗しますアプリケーションを初期化します。また、アプリケーションを強制終了すると、アプリケーションを起動しようとしたときにデバイスが遅く表示されるようになります。これは、アプリケーションのユーザーインターフェイスを表示する前に、通常実行しているものを起動する必要があるためです。

GPS、wifi、bluetooth、データ使用量など、バッテリーの消耗を引き起こすものは、送受信されるデータを処理するためにCPUをより多く使用します。使用していないときにこれらをオフにすると、バッテリーの消耗を抑えることができます。デバイスに不良バッテリーがあり、94%を超えて充電することさえありませんが、必要のないときにこれらのサービスをオフにすると、バッテリーを12時間以上使用できます。

私は常にグーグルマップを使用しており、バッテリーの統計ではリソースを使用するアプリとしてリストされていません。私のバッテリー使用率が最も高いのはScreen @ 31%であり、最も低いバッテリーはGMail @ 3%です。Googleマップはバッテリーの消耗の原因ではありません。タスクキラーを使用することが原因である可能性が高くなります。私が言ったように、私はほぼ毎日の道順のためにグーグルマップを使用しており、それは私のバッテリーを使用しているアプリのトップ10リストにもありません。

Google Android Developersブログのタスクキラーに関する詳細情報。

Androidマルチタスクに関する一般的な誤解は、プロセスとアプリケーションの違いです。Androidでは、これらは密結合されたエンティティではありません。実際にアプリケーションを実行している実際のプロセスがなくても、ユーザーにはアプリケーションが存在しているように見えます。複数のアプリケーションがプロセスを共有する場合もあれば、1つのアプリケーションが必要に応じて複数のプロセスを使用する場合もあります。そのアプリケーションが積極的に何かをしていない場合でも、アプリケーションのプロセスはAndroidによって保持されます。

アプリケーションのプロセスが「実行中」であることを確認できるということは、アプリケーションが実行中または何かを実行しているという意味ではありません。Androidはある時点でそれを必要としていたので、単にそこにある可能性があり、再び必要になった場合に備えて保持するのが最善であると判断しました。同様に、アプリケーションを少し残して、中断したところからアプリケーションに戻ることもできます。その間、Androidは他のことのためにプロセスを取り除く必要があったかもしれません。

Androidがこのようにアプリケーションを処理する方法の鍵は、プロセスが正常にシャットダウンしないことです。ユーザーがアプリケーションを離れると、そのプロセスはバックグラウンドで維持され、必要に応じて作業を続行(たとえば、Webページのダウンロード)し、ユーザーがアプリケーションに戻るとすぐにフォアグラウンドに戻ります。デバイスがメモリ不足にならない場合、Androidはこれらのプロセスをすべて維持し、すべてのアプリケーションを常に「実行」したままにします。

もちろん、メモリの量には限りがあり、これに対応するために、Androidは不要なプロセスをいつ削除するかを決定する必要があります。これにより、Androidのプロセスライフサイクル、各プロセスの重要性を決定するために使用されるルール、したがってドロップされるべき次のプロセスが決まります。これらのルールは、プロセスがユーザーの現在のエクスペリエンスにとってどれだけ重要であるか、およびプロセスがユーザーによって最後に必要になってからどれだけ経過したかに基づいています。

プロセスを削除する必要があるとAndroidが判断すると、それを単純に強制終了します。カーネルは、そのアプリケーションが適切に作成されていて、終了する丁寧な要求に応答することに依存することなく、プロセスに必要なすべてのリソースをすぐに再利用できます。カーネルがアプリケーションリソースをすぐに再利用できるようにすると、深刻なメモリ不足の状況を回避するのがはるかに簡単になります。

ユーザーが後で強制終了されたアプリケーションに戻った場合、Androidは「すべてのアプリケーションが常に実行されている」エクスペリエンスを維持するために、前回表示された状態と同じ状態で再起動する方法を必要とします。これは、ユーザーが認識しているアプリケーションの部分(アクティビティ)を追跡し、最後に見た状態に関する情報でそれらを再起動することによって行われます。この最後の状態は、ユーザーがその部分を離れるたびに生成されますその時点で正しく応答するためにアプリケーションに依存することなくカーネルが後で自由にそれを殺すことができるように、それは殺されたときではなく、アプリケーションの。

いくつかの点で、Androidのプロセス管理はスワップスペースの一形態と見なすことができます。アプリケーションプロセスは一定量の使用中のメモリを表します。メモリが少ない場合、一部のプロセスを強制終了(スワップアウト)できます。これらのプロセスが再び必要になった場合、最後に保存された状態から再起動できます(スワップイン)。

タスクキラーがバッテリーを消耗させる方法について説明した別の記事があります。

自動タスクキリングソフトウェア
使用しないでください長い話を短くするために、自動タスクキラーを使用すると、過度のバッテリー消耗(電話がすでに十分に速くバッテリーを消耗しないかのように)、電話が頻繁に過熱し、プログラムがシャットダウンすることがあります(クラッシュ)ランダム–実際に使用したいプログラム。これらに近づかないでください!

使用するまで「マップの停止」を本当に設定している場合にできることの1つは、チタンバックアップでフリーズオプションを使用することです。これにより、基本的にデバイスからアプリケーションが削除され、アプリケーションをフリーズ解除するまで、アプリケーションに関連付けられたサービスは開始されません。


1
メモリを解放すると、Droid Xのクロール速度が30〜40 MBで非常に遅くなり、いずれの場合もCPUを占有するアプリがなく、適度に反応して高速になります。申し訳ありませんが、これは実際には当てはまらない、ちょっとした理論です。
DVK

また、AndroidメモリマネージャーがWebブラウザを強制終了して、開いているすべてのタブを失い、Googleマップ用のスペースを確保すると、生産性が大幅に低下します。
DVK

4
あなたが経験しているのはプラセボ効果です。空きメモリはデバイスの実行速度を向上させませんが、空きCPUはそれを実現します。タスクキラーのトピックに関する別の参照を追加しました(グーグルから)
ライアンコンラッド

2
タスクキラーを使用するとドレインが発生するため、答えでその理由を説明しました。それに加えて、答え全体を読んだ場合は、アプリをフリーズして、チタンを使用した問題に対する正確な答えを示します。
ライアンコンラッド

3
@Chanceいいえ。実際にその時点で実行されていないプロセスを強制終了すると、システムは最終的にそのプロセスを起動し直さなければならず、CPUを使用する「すべての初期化」を実行します。プロセスが実行されているからといって、その時点で実際に何かを実行しているわけではありません。
ライアンコンラッド

11

マップのアンインストールと再インストールを考えられる解決策として考えましたか?

  1. まず、/system/app/Maps.apkファイルを削除して、事前にロードされたマップを取り除きます。

    su  
    rm /system/app/Maps.apk
    

    システムアプリが更新されると、/ system / appフォルダーでは役に立たなくなり、安全に削除できます。

  2. 次に、現在のマップバージョンをSDカードにコピーします。

    cp /data/app/com.google.android.apps.maps*.apk /sdcard/
    
  3. 次に、マップアプリをアンインストールします。

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

    「-k」スイッチは、アプリを再インストールするときの設定を保持します。

  4. マップを元に戻すには、バックアップからマップを再インストールするだけです。

    pm install -r /sdcard/com.google.android.apps.maps*.apk
    

GScriptを介してこれらの手順を自動化できます。これにより、スクリプトへのショートカットを作成できます。そのため、ステップ#3のコマンドで「Disable Maps」という名前のスクリプトを作成し、ステップ#4のコマンドで「Enable Maps」という名前の別のスクリプトを作成します(両方とも「Needs SU?」をチェックします)。

これで、Androidの通常の「ショートカットの追加」メソッドを使用して作成したスクリプトから2つのGScriptショートカットをホーム画面に追加できます(GScriptはオプションの1つです)。

この方法の唯一の欠点は、アンインストールするとホーム画面からマップショートカット(および/またはウィジェット)が失われる可能性が高く、再インストール後に再度追加する必要があることです。もちろん、アプリドロワーからマップを起動することはできます。


この手順は、MapsがDroidXにプリインストールされているという事実によって悪影響を受けますか?または、それはROMにありませんでしたか?素晴らしいアイデアのために+1!
DVK

2
最初にシステムバージョンのAPKを削除しないと、アンインストールは失敗します。通常、システムアプリがマーケットから更新を取得すると、/ system / app /フォルダー内の対応するAPKを安全に削除できます。
チャク

1
@Chank-Verizonのブロートウェアではなく、rootになっている限り、実際にシステムバージョンを削除するアクセス権があると思いますか?:)
DVK

1
電話機がルート化されている限り、/ system / appからMaps.apkを削除しても問題はありません。
チャク

2

Android 4.0 Ice Cream Sandwich以降では、システム設定でGoogleマップを無効にできます。まだFroyoにこだわっている場合、これは役に立ちませんが、他の人はそれからいくらかの利益を得るかもしれません。


関連するすべてのサービスを無効にしますか?(GMやLatitudeなど...)?
DVK

それはにもたらすすべてのものを含め、完全にそのアプリを無効に私の知る限り、などナビゲーション、緯度、含まれている。
マイケル・ハンプトン

1

Titaniumバックアップホームページ 市場リンクのフリーズ機能を使用することをお勧めします。この機能を使用するにはアプリを登録する必要があります(6.58ドル)が、携帯電話をハッキングしたい場合は価格の価値があると確信しています。アプリの代金を支払う他の主な理由は(開発者がフリーソフトウェアのすばらしい部分を作成することをサポートする以外)、バックアップしたアプリとデータのバッチインストール(つまり、バックアップからの復元)を行えるようにすることです。それ以外の場合は、標準のアプリインストールダイアログを使用する必要があります。

フリーズに関するウェブサイトから:

アプリのフリーザーは、アプリをアンインストールせずに無効にできます(そして非表示にします)。

または、実際にアンインストールと再インストールを行うことができます。凍結する理由があるのに気づくかもしれませんが、わかりません。


申し訳ありませんが、これは役に立ちません。私の質問では、「私が試したもの」の箇条書き#3:「Titanium Backup Proを使用してフリーズします。これには再起動が必要で、一般的にあまり快適ではありません。」
DVK

0

スマートフォンにオプションがある場合はSettings > Applications > Development > Stop app via long-press、この方法でいつでもGoogleマップを閉じることができます。アプリを再度開くまで、このプロセスも強制終了されます。


-1

スマートフォンをルート化してから、Google PlayのAutoStartsアプリを使用して、マップをトリガーするすべてのイベントを無効にします。手動で開始すると正常に動作しますが、強制終了しても消えません。After Startupイベントフォルダーで不要なものをすべて無効にして、メモリ消費をさらに削減します。


1
質問を注意深く読みましたか?これは、明示的に述べている:Second, the only practical way of doing that that I know of is Autostarts app which is NOT a workable solution - it takes ~5-10 mins to find and re-enable all the intents I am aware of (Autostarts is really poor at per-app intent management - it's centered on per-intent), never mind possible intents that Autostarts does NOT know about (it's a black box, I don't know which intents are missed if any.
DVK
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.