第二十六节(am命令)

在终端利用am命令启动一个activity:
命令格式:am start -n 包名/全类名

am start -n com.example.huozhenpeng.amdemo/com.example.huozhenpeng.amdemo.SecondActivity

am命令所在路径(其实就是一个java文件):

image.png

路径:

image.png

在终端输入am命令的时候其实运行的就是这个am脚本

image.png

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()方法

image.png

如果直接在终端输入am命令提示的信息就是在这里打印到控制台的

image.png

如果参数多于一个

 @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()方法

image.png

这里就是启动Activity的代码以及一些健壮性判断。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容