android framework层 学习笔记(二)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了android framework层 学习笔记(二),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3127字,纯文字阅读大概需要5分钟。
内容图文
![android framework层 学习笔记(二)](/upload/InfoBanner/zyjiaocheng/1079/d0a921a79b4e45dea8f3ea7a9c0ebf82.jpg)
/framework/cmds 部分
这部分主要是命令的实现部分。 android 本身是支持一部分linux命令的,并且再次基础上android又添加了一些他自身独有的命令,而这些命令正在存放在/framework/cmds文件夹下面的。
先来看第一个例子: am
am 命令,我没能在源码中找到解释am具体的作用的描述文档,我只能根据源码来自己形容他,这个是一个用于开启组件的命令,包括activity 还有 service 。
ok,我的描述结束,接下来看源码:
public class Am extends BaseCommand
先去看一下他父类的源码:package com.android.internal.os.BaseCommand
主要有这么几部分
/** * Call to run the command. */ 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); } }
这是函数是执行的命令的时候调用的, 里面的参数 String args[] 也就是你执行命令后面携带的参数
/** * Convenience to show usage information to error output. */ public void showUsage() { onShowUsage(System.err); }
这个是显示用法的,比如加什么参数,是做什么用的,都是通过这个函数实现的。
/** * Convenience to show usage information to error output along * with an error message. */ public void showError(String message) { onShowUsage(System.err); System.err.println(); System.err.println(message); }
当error的时候调用这个函数,里面有调用展示用法的函数,这个也就解释了为什么在调用命令错误的时候,一般会给出来当前命令的用法。
/** * Implement the command. */ public abstract void onRun() throws Exception; /** * Print help text for the command. */ public abstract void onShowUsage(PrintStream out);
这两个方法是抽象方法,用来让子类继承实现的,具体作用,根据名字也可以推断出来了。
/** * Return the next option on the command line -- that is an argument that * starts with '-'. If the next argument is not an option, null is returned. */ public String nextOption() { if (mCurArgData != null) { String prev = mArgs[mNextArg - 1]; throw new IllegalArgumentException("No argument expected after \"" + prev + "\""); } if (mNextArg >= mArgs.length) { return null; } String arg = mArgs[mNextArg]; if (!arg.startsWith("-")) { return null; } mNextArg++; if (arg.equals("--")) { return null; } if (arg.length() > 1 && arg.charAt(1) != '-') { if (arg.length() > 2) { mCurArgData = arg.substring(2); return arg.substring(0, 2); } else { mCurArgData = null; return arg; } } mCurArgData = null; return arg; } /** * Return the next argument on the command line, whatever it is; if there are * no arguments left, return null. */ public String nextArg() { if (mCurArgData != null) { String arg = mCurArgData; mCurArgData = null; return arg; } else if (mNextArg < mArgs.length) { return mArgs[mNextArg++]; } else { return null; } } /** * Return the next argument on the command line, whatever it is; if there are * no arguments left, throws an IllegalArgumentException to report this to the user. */ public String nextArgRequired() { String arg = nextArg(); if (arg == null) { String prev = mArgs[mNextArg - 1]; throw new IllegalArgumentException("Argument expected after \"" + prev + "\""); } return arg; }
这里的三个函数,分别是用来处理下一个参数,下一个操作,或者当需要参数的时候来调用的,因为是public 并且在本类中没有被调用,所以我也不清楚具体的用法,等我在其他部分读到调用这里的源码的时候,才能知道他的作用,所以这里依旧放一放。
这个时候,再反过头来看am的源码,现在看来这里的代码就简单多了,重点是在 onRun 和 处理参数输入的几个函数上,其他都大同小异。
原文:http://blog.csdn.net/i7788/article/details/41699715
内容总结
以上是互联网集市为您收集整理的android framework层 学习笔记(二)全部内容,希望文章能够帮你解决android framework层 学习笔记(二)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。