ルートなしでバックグラウンドプロセスをフリーズする (Android 7.0 以降)

このチュートリアルでは、隠し ADB コマンドを使用して、root なしで Android 7.0 および 7.1 Nougat 上のアプリのバックグラウンド プロセスをフリーズする方法を説明します。

Android は、サードパーティ アプリケーションの自由度が高いため、iOS と比較した場合、より「強力な」モバイル プラットフォームであると常に考えられてきました。 これにより、Android アプリケーションがバックグラウンドで実行中により多くのタスクを実行できるため、多くの自動化が可能になります。 ただし、これにはマイナス面があり、デバイス上でバックグラウンド プロセスが実行されるため、バッテリーの消耗がさらに増える可能性があります。

バックグラウンドで実行されるアプリケーションを携帯電話にロードしていることを知っておくことは、その利点のためにバッテリー寿命の一部を犠牲にすることをいとわないためです。 最適化されておらず、必要のない、あるいは必要のないときにバックグラウンドでタスクを実行する従来のアプリケーションをダウンロードしているだけの場合は、話は別です。 Google は、アプリケーションが実行できる内容にますます多くの制限を設けることで、この問題を解決しようと取り組んできました。 Android O のリリースにより、バックグラウンド プロセス/受信側の制限が最も多くなります。 遠い。

ただし、大多数のユーザーは、(たとえあったとしても) 今から何か月もの間、デバイス上で Android O を目にすることはないだろう。 でも、走っているなら Android 7.0 または Android 7.1、手動で実行できる簡単なトリックがあります。 アプリケーションがバックグラウンドで実行されないようにする -そしてそれ rootは必要ありません またはサードパーティのアプリケーション. これは、Greenify や Brevent などのアプリが提供するものよりも強力です。root アクセスがないと、これらのアプリはできることがかなり制限されます。 しかし、このトリックを使えば、次のことが可能になります。 Facebook やハングアウトなどのアプリをブロックする バックグラウンドで実行されることはありません。アクティブに使用されている場合にのみ機能します。


バックグラウンドプロセスを制限するチュートリアル

要件:

  • Android Nougat (7.0 または 7.1) デバイス
  1. 特定のデバイス OEM 用の USB ドライバーをインストールします (Google がいくつかのドライバーのリストを提供しています) ユニバーサルUSBドライバーはこちら).
  2. ダウンロード ADBバイナリ 特定の OS の場合 (ウィンドウズ, マック, Linux). これらのリンクは常にバイナリの最新バージョンを指します。
  3. ZIP ファイルの内容を PC 上の簡単にアクセスできるフォルダーに解凍します。
  4. 携帯電話の設定アプリに移動し、「電話について」オプションをタップします。
  5. ビルド番号を見つけて 7 回タップして、開発者モードを有効にします。
  6. [設定] メイン メニューに戻り、[開発者向けオプション] に入り、USB デバッグ モードを有効にできます。
  7. 携帯電話をコンピュータに接続し、「充電のみ」モードから「ファイル転送 (MTP)」モードに変更します。 これはすべてのデバイスで必要なわけではありませんが、多くのデバイスでは、ADB の動作を許可する前にセキュリティ対策としてこれが必要です。
  8. PC に戻り、ADB バイナリを抽出したディレクトリを参照します。
  9. ADB ディレクトリでコマンド プロンプトまたはターミナルを起動します。 Windows ユーザーの場合、Shift キーを押しながら右クリックし、「ここでコマンド プロンプトを開く」オプションを選択することでこれを行うことができます。 (一部の Windows 10 ユーザーには、「コマンド プロンプト」が「PowerShell」に置き換えられている場合があります。)
  10. コマンド プロンプトまたはターミナル環境に移動したら、次のコマンドを入力します。 adb devices
  11. これにより、ADB デーモンがまだ起動されていない場合は起動されます。完了するまで待ちます。 ADB を初めて実行する場合は、コンピュータとの接続を承認するように求めるプロンプトが携帯電話にも表示されます。 ここで USB デバッグ アクセスを許可します。
  12. ここで、ステップ 10 から adb devices コマンドを再実行すると、コマンド プロンプト/ターミナルにデバイスのシリアル番号が出力されます。 そうであれば、次に進む準備は完了です。 そうでない場合は、USB ドライバーが正しくインストールされていない可能性があります。
  13. 次に、バックグラウンド プロセスを凍結したいアプリケーションのパッケージ名を見つける必要があります。 これを行うには、 アプリインスペクター 携帯電話でアプリケーションを起動します。
  14. コマンド プロンプトに戻り、次のコマンドを入力します。 adb shell
  15. 次に、次のコマンドを実行して、アプリケーションのバックグラウンド プロセスを解放します。 cmd appops set RUN_IN_BACKGROUND ignore
  16. 行った変更を元に戻し、アプリのバックグラウンド プロセスを再度許可したい場合は、次のコマンドを入力します。 cmd appops set RUN_IN_BACKGROUND allow
  17. 別の ADB シェル プロンプトに戻り、エラー メッセージが表示されなければ、それが機能していることがわかります。

説明

このコマンドがどのように正確に機能するかというと、通常は設定アプリでユーザーがアクセスできない非表示のアクセス許可を制限できるということです。 この権限は RUN_IN_BACKGROUND 権限と呼ばれ、変更できる唯一の方法は「cmd」を使用することです。 appops」は、Google のユーザー向け権限管理システムである「App Ops」のコマンド ライン インターフェイスです。

Google は、アプリケーションが暗黙的なブロードキャスト インテントを受信するのを制限できるようにするこの隠し ADB コマンドを追加しました。 アプリがバックグラウンドで起動する)、また、それらのアプリケーションが JobScheduler を使用せずにバックグラウンド サービスをスケジュールできないようにします(つまり、 アプリが不適切な時間に起動してバッテリーを消耗します)。 このコマンドは、実際には、メモリ不足状態でアプリがどのように動作するかをシミュレートしたい開発者のみが使用することを目的としていますが、ありがたいことに、私たち自身で使用することができます。

アプリのバックグラウンド サービスとマニフェストに登録された暗黙的なブロードキャスト レシーバーへの依存関係を削除することで、開発者はメモリの少ないデバイスでもより適切に実行できるようにアプリケーションを最適化できます。 Google によれば、このようなタイプのデバイス、またはメモリ不足状態にあるデバイス向けにアプリケーションを最適化すると、パフォーマンスとユーザー エクスペリエンスの両方が向上する可能性があります。 今年の Google I/O で、同社は次のように発表しました。 Android Goと呼ばれるAndroidの修正バージョン、これはメモリが非常に少ないスマートフォンで使用されるため、このコマンドはそのプラットフォームを対象とする開発者にとって役立つと考えられます。

いずれにせよ、このコマンドは平均的なユーザーにとって非常に便利ですが、ここで制限する内容には注意してください。 ハングアウトや Facebook などのアプリは、ユーザーが開くまでバックグラウンドでの同期を完全に停止しますが、これが目的であれば、気にしないと思います。 ただし、バックグラウンド レシーバーに依存するアプリでこのコマンドを実行すると、電子メールやメッセージが遅延しても驚かないでください。