找回密碼
 註冊
搜索
查看: 1941|回復: 0

[教學] RootShell 如何等command做完再執行(waitFor)

[複製鏈接]
發表於 2018-3-23 00:45:54 | 顯示全部樓層 |閱讀模式
 
Push to Facebook
  1. Command cmd = new Command(158, false, pathstring);
  2.             Shell shell = Shell.startRootShell(158,158);
  3.             shell.add(cmd);
  4.             waitForCommand(cmd);
複製代碼
Command cmd = new Command(158, false, pathstring);
handleEnable = false
這樣Thread才不會咬住

158只是int 整數,隨便填


一定要
Shell shell = Shell.startRootShell(158,158);
shell.add(cmd);

後,再執行 cmd

不要用範例的
  1. Command cmd = new Command(pathstring);
  2. Shell.startRootShell().add(command);
複製代碼
操作會變得很慢然後建waitForCommand function

  1. private static boolean waitForCommand(Command cmd) {
  2.         while (!cmd.isFinished()) {
  3.             synchronized (cmd) {
  4.                 try {
  5.                     if (!cmd.isFinished()) {
  6.                         cmd.wait(1);
  7.                     }
  8.                 } catch (InterruptedException e) {
  9.                     e.printStackTrace();
  10.                 }
  11.             }
  12.             if (!cmd.isExecuting() && !cmd.isFinished()) {
  13.                 Log.d("Debug", "Error: not complete");
  14.                 return false;
  15.             }
  16.         }
  17.         return true;
  18.     }
複製代碼

參考文章
https://blog.csdn.net/andrexpert/article/details/53082397
https://www.programcreek.com/jav ... ell.execution.Shell
https://github.com/Stericson/Roo ... hell/RootShell.java



 
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

Archiver|手機版|小黑屋|TShopping

GMT+8, 2025-4-30 19:45 , Processed in 0.032256 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回復 返回頂部 返回列表