在终端利用am命令启动一个activity:
命令格式:am start -n 包名/全类名
am start -n com.example.huozhenpeng.amdemo/com.example.huozhenpeng.amdemo.SecondActivity
am命令所在路径(其实就是一个java文件):
路径:
在终端输入am命令的时候其实运行的就是这个am脚本
Am.java
public static void main(String[] args) {
(new Am()).run(args);
}
调用run方法并传入参数
public void run(String[] args) {
if (args.length < 1) {
onShowUsage(System.out);
return;
}
mArgs = args;
mNextArg = 0;
mCurArgData = null;
try {
onRun();
} catch (IllegalArgumentException e) {
onShowUsage(System.err);
System.err.println();
System.err.println("Error: " + e.getMessage());
} catch (Exception e) {
e.printStackTrace(System.err);
System.exit(1);
}
}
如果参数小于1调用onShowUsage()方法,否则调用onRun()方法
如果直接在终端输入am命令提示的信息就是在这里打印到控制台的
如果参数多于一个
@Override
public void onRun() throws Exception {
mAm = ActivityManagerNative.getDefault();
if (mAm == null) {
System.err.println(NO_SYSTEM_ERROR_CODE);
throw new AndroidException("Can't connect to activity manager; is the system running?");
}
String op = nextArgRequired();
if (op.equals("start")) {
runStart();
} else if (op.equals("startservice")) {
runStartService();
} else if (op.equals("stopservice")) {
runStopService();
} else if (op.equals("force-stop")) {
}
}
这里判断第二个参数,我们传入的是start,所以接着执行runStart()方法
这里就是启动Activity的代码以及一些健壮性判断。