6

アプリケーションで ActivityManager.killBackgroundProcesses を試していて、興味深いことに気付きました。stackoverflow の誰かがこれに光を当ててくれることを願っています。

たとえば、YouTube などのアプリケーションを起動すると、最初に動画ページのリストが表示されます。次に、メニュー -> [設定] をクリックすると、設定ページが表示されます。ホームボタンをクリックすると、YouTubeがバックグラウンドになります。ここまでは順調ですね。ここで、ActivityManager.killBackgroundProcesses を実行して YouTube アプリケーションを強制終了すると (または、同じ API を使用していると思われる高度なタスク キラーを使用します)、YouTube を再度起動すると、ビデオ ページのデフォルト リストではなく、設定ページが表示されます。

しかし、ActivityManager.killBackgroundProcesses を実行する代わりに、システム設定 -> アプリケーションの管理 -> Youtube -> 強制停止に移動すると、YouTube を再度起動すると、設定ページではなく、ビデオ ページのリストが表示されます。

したがって、ActivityManager.killBackgroundProcesses は強制停止とは異なるようです。これは、バックグラウンドに移行する前の最後のタスク/ページを記憶しているのに対し、強制停止は新たなスタートを切るためです。

誰でもそれについて良い説明がありますか?コードで「強制停止」を実行して、アプリケーションを新たに開始することは可能ですか?

どうもありがとう!

4

2 に答える 2

1

ええと、私以外のアプリでこれまで試したことがないので、正確にどのように使用するかはわかりませんが、役立つかもしれません-使用することを考えてください: android.os.Process.killProcess(android.os.Process.myPid());

そして、なぜシステムが停止でき、あなたが停止できないのかというあなたの質問について。真実は、システムはもっとできるということです。より具体的には、強制停止ボタンを押すと、システムは特定の pid で処理するために kill シグナル (シグナル 9) を送信します。

これが、まったく同じではないにしても、ほぼ同じ信号を送信しているため、上記の関数が役立つはずだと思う理由です。

それが役立つことを願っています。

于 2012-01-09T20:18:53.013 に答える
0

アプリが Android OS セキュリティ システムに記録しても、別のアクティビティを強制終了することはできません。リクエストをシステムに送信すると、可能であれば、必要なすべての処理が実行されます。

設定はシステム アプリケーションであるため、アプリよりも多くのアクセス権があります。

つまり、OS がアプリを強制終了することを許可していないようです。よくわかりませんが、アプリの権限を確認してみてください。解決策があるかもしれません。

于 2012-01-09T20:30:36.560 に答える