0

バッテリー寿命が特定のレベルを下回ると、バッテリーを節約する方法のオプションを含むダイアログが表示されるように、Andoid アプリを作成しています。これらのオプションの 1 つは、を使用してすべてのバックグラウンド アプリ/サービス (プロセス) を閉じることですActivityManager.killBackgroundProcesses()。コードは次のとおりです。

    public void TaskKiller( View view){
List<ApplicationInfo> packages;
PackageManager pm;
pm = getPackageManager();
packages = pm.getInstalledApplications(0);


ActivityManager mActivityManager = (ActivityManager)this.getSystemService(Context.ACTIVITY_SERVICE);

for (ApplicationInfo packageInfo : packages) {


mActivityManager.killBackgroundProcesses(packageInfo.packageName);
}      
}

ただし、TaskKiller() を呼び出してバックグラウンド プロセスを閉じるボタンをクリックすると、一部のアプリ (メール、Google マップ) がすぐに再起動プロセスを開始します。これらのアプリが再び開かれるまで閉じたままになるようにコードを変更するにはどうすればよいですか? また、このアプローチは電力の節約に関して賢明ですか、それとも間違った方法で攻撃していますか?

4

2 に答える 2

1

それが問題を処理する正しい方法だとは思いません。これらのアプリにはブロードキャスト レシーバーがあり、何かが発生するたびにサービスを再起動します (つまり、AC が接続されている/WiFi がオンになっている)。ルートなしでそれを停止し、実際にブロードキャスト レシーバーを無効にする方法はないと思います。5 分ごとに停止するようなものを作成することもできますが、それではバッテリーにあまり優しくありません。

于 2013-07-11T19:58:24.883 に答える
0

毎回マップアプリを強制終了するのは良い考えではないと思います.Androidのバグだと思います..

答えの 1 つとして次のようなものがあります。実際には、携帯電話の Gmail アプリの [アカウント設定] にある [一般的な同期設定] で [バックラウンド データ] にチェックマークを付けている場合、マップは常に実行されます。 (ただし、インターネット アクセスはこのアイテムにチェックマークがなくても機能します。)このチェックボックスをオフにすると、実行中のアプリケーション(およびそれを必要とするその他のアプリ)からマップが削除され、バッテリー時間が改善され、携帯電話の速度が向上します。バックラウンド同期を必要とする電話、テキスト、またはアプリを使用する場合は、このチェックマークを付ける必要があります. ネットを閲覧するだけの場合は、チェックマークを外してください. 現在、この問題に対する他の正当な解決策はありません.これは役に立ちます...

"

この問題を参照してください ( https://code.google.com/p/android/issues/detail?id=10251 )

于 2013-07-11T20:01:12.430 に答える