回答:
Androidのターミナルアプリで、次のように入力します(ルートアクセスが必要です)。
su
am stop-user USER_ID
たとえば、ゲストユーザーの場合、USER_ID
デバイス内にある11
ため、コマンドはになりますam stop-user 11
。
am stop-user
複数の入力を処理しないため、一時停止するすべてのセカンダリユーザーに対してコマンドを実行する必要があります。
これは、デバイスの再起動とは少し異なります。am
の使用状況を確認すると、
am stop-user: stop execution of USER_ID, not allowing it to run any code until a later explicit start or switch to it.
前述のように、そのユーザーアカウントに関連付けられているすべてのアクティビティを一時停止するだけなので、明示的な開始または切り替えが提供されると、セッションは最初からではなく再開されます。
ユーザーが実際に一時停止または実行されていないことの確認については、ADBから現在実行中のユーザー名/ IDを見つける方法についての私の回答を参照してください。
簡単に言えば、pm list users
またはdumpsys activity
ユーザーがあるかどうかを言うだろうRUNNING
かSHUTDOWN
。後者のコマンドの方が優れています。ユーザーセッションが実際にによって停止されている場合am stop-user
はmState=SHUTDOWN
、そのユーザーについて表示されます。ただし、再起動後にユーザーが一度もアクティブ化されていない場合、そのエントリは表示されません。
adb install -r app.apk
です。それが問題かどうかわからない。
android-5.1.1
そしてそれは述べられたように働きました。私はスクリプト部分をチェックしていませんが、発行時にam stop-user 10
、2番目のユーザーのすべてのプロセスが強制終了されSettings > Apps
、ps
コマンドにまたはコマンドとともにリストされていません。だから、それは方法ですが、android-5.0.2
現在このコマンドにはバグがあるか、そのような機能がそのバージョンの時点では実装されていないと思います。しかし、5.1にはまだ耐えられないバグがあります。ありがとうございました:)
am stopuser 10
たようにpm list users
、ユーザーが実行していないときにコマンドを表示するだけでした。確認しadb shell ps
たところam stop-user 10
、u10_axx
実行中のプロセスが見つかりました。停止しているかどうかを確認するために、2番目のユーザーのターミナルでシェルスクリプトを実行してみました。スクリプトは、1秒ごとにエコーステートメントをループします(1秒ごとに表示)。このスクリプトを開始した後、am stop-user 10
コマンドを使用して5分間待機し、2番目のユーザーセッションを再開すると、スクリプトは停止していません。それはずっと実行されていました。