想要通过命令am start -W 包名/activity名启动一个app同时获取其启动时间。但是有的app会成功,有的会超时,有的会卡住。现在讨论卡死的状态。
卡死时log输出:
查了下资料说是ndk的bug
这不坑爹么..
所以为了不让它卡住,做一个计时操作,时间到了就停止该操作。参照前辈的文章:
public class CMDThread {private static int time = -1;public static int getStartTime(final String cmd, long timeout){ExecutorService exec = wFixedThreadPool(1);Callable<String> call = new Callable<String>() {public String call() throws Exception {// 开始执行耗时操作String result = CMDUtils.runCMD1(cmd, "ThisTime:");return result;}};try {Future<String> future = exec.submit(call);String obj = (timeout, TimeUnit.MILLISECONDS); // 任务处理超时时间设为System.out.println("任务成功返回:" + obj);time = obj != null ? Integer.parseInt(obj.split("\:")[1].trim()) : -1;} catch (TimeoutException ex) {System.out.println("处理超时啦....");} catch (Exception e) {System.out.println("处理失败.");e.printStackTrace();}// 关闭线程池exec.shutdown();return time;}public static void main(String[] args) {int startTime = StartTime("adb shell am start -dream.wifi/com.wifibanlv.www.activity.LogoActivity",1000 * 60);System.out.println(startTime);}
}
本文发布于:2024-01-30 01:47:11,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170655043518362.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |