"浅谈Android"第一篇:Android系统简介
- Android系统架构
- Andorid已发布的版本
- Android应用特色
- Android开发环境
- Android程序结构
- Logcat工具
- Hello World
1,Android系统架构
有图有真相:
/%E6%9C%89%E9%81%93%E4%BA%91%E7%AC%94%E8%AE%B0%E5%A4%87%E4%BB%BD/cr330326@126.com/b45d73d3479d4d5580f64e3fb49e7aa6/clipboard.png)

- Linux内核层(Linux Kernel)
- 系统运行层
- 应用框架层(Application Framework)
- 应用层(Applications)
2,Android已发布的版本


3,Android应用特色
Android主要有什么特色呢,有以下几个方面来体现:
- 四大组件
- 丰富的系统控件
- SQLite数据库等持久化技术
- 地理位置定位
- 强大的多媒体
- 传感器
4,Android开发环境
开发环境搭建所需要的软件,配置等攻略,相信大家网上搜一搜,这类文章太多了。这里只强调重要几个工具:Android SDK、Eclipse、ADT。
5,Android程序结构
有图有真相:
从图中看是不是一目了然,那么接下来就一一讲解吧。
6,Logcat工具
有图有真相:
6.1,Log.v()
这个方法用于打印那些最为琐碎的,意义最小的日志信息。对应级别 verbose,是Android 日志里面级别最低的一种。
这个方法用于打印一些调试信息,这些信息对你调试程序和分析问题应该是有帮助的。对应级别 debug,比 verbose 高一级。
这个方法用于打印一些比较重要的数据,这些数据应该是你非常想看到的,可以帮你分析用户行为的那种。对应级别 info,比 debug 高一级。
这个方法用于打印一些警告信息,提示程序在这个地方可能会有潜在的风险,最好去修复一下这些出现警告的地方。对应级别 warn,比 info 高一级。
这个方法用于打印程序中的错误信息,比如程序进入到了 catch 语句当中。当有错误信息打印出来的时候,一般都代表你的程序出现严重问题了,必须尽快修复。对应级别 error,比 warn 高一级。
比如,你正在编写一个比较庞大的项目,期间为了方便调试,在代码的很多地方都打印了大量的日志。最近项目已经基本完成了,但是却有一个非常让人头疼的问题,之前用于调试的那些日志,在项目正式上线之后仍然会照常打印,这样不仅会降低程序的运行效率,还有可能将一些机密性的数据泄露出去。
那该怎么办呢,难道要一行一行把所有打印日志的代码都删掉?显然这不是什么好点子,不仅费时费力,而且以后你继续维护这个项目的时候可能还会需要这些日志。因此,最理想的情况是能够自由地控制日志的打印,当程序处于开发阶段就让日志打印出来,当程序上线了之后就把日志屏蔽掉。
public class LogUtil { public static final int VERBOSE=1;
public static final int DEBUG=2;
public static final int INFO=3;
public static final int WARN=4;
public static final int ERROR=5;
public static final int NOTHING=6; public static final int LEVEL=VERBOSE; //发布新版本时候 等级为6 public static void v(String tag,String msg){
if(LEVEL <=VERBOSE){
Log.v(tag, msg);
}
} public static void d(String tag,String msg){
if(LEVEL <=DEBUG){
Log.d(tag, msg);
}
} public static void i(String tag,String msg){
if(LEVEL <=INFO){
Log.i(tag, msg);
}
} public static void w(String tag,String msg){
if(LEVEL <=WARN){
Log.w(tag, msg);
}
} public static void e(String tag,String msg){
if(LEVEL <=ERROR){
Log.e(tag, msg);
}
}
}
可以看到,我们在 LogUtil 中先是定义了 VERBOSE、 DEBUG、 INFO、 WARN、 ERROR、NOTHING 这六个整型常量,并且它们对应的值都是递增的。然后又定义了一个 LEVEL 常
量,可以将它的值指定为上面六个常量中的任意一个。接下来我们提供了 v()、 d()、 i()、 w()、 e()这五个自定义的日志方法,在其内部分别调用了 Log.v()、 Log.d()、 Log.i()、 Log.w()、 Log.e()这五个方法来打印日志,只不过在这些自定义的方法中我们都加入了一个 if判断,只有当 LEVEL 常量的值小于或等于对应日志级别值的时候,才会将日志打印出来。
7,Hello World
阅读扩展
"浅谈Android"第一篇:Android系统简介的更多相关文章
- 浅谈Kotlin(一):简介及Android Studio中配置
浅谈Kotlin(一):简介及Android Studio中配置 浅谈Kotlin(二):基本类型.基本语法.代码风格 浅谈Kotlin(三):类 浅谈Kotlin(四):控制流 前言: 今日新闻:谷 ...
- 浅谈 unix, linux, ios, android 区别和联系
浅谈 unix, linux, ios, android 区别和联系 网上的答案并不是很好,便从网上整理的相对专业的问答,本人很菜,大佬勿喷 UNIX 和 Linux UNIX 操作系统(尤尼斯) ...
- [Android&Java]浅谈设计模式-代码篇:观察者模式Observer
观察者,就如同一个人,对非常多东西都感兴趣,就好像音乐.电子产品.Game.股票等,这些东西的变化都能引起爱好者们的注意并时刻关注他们.在代码中.我们也有这种一种方式来设计一些好玩的思想来.今天就写个 ...
- 【转】gradle for android 第一篇
正如大家所见,这是本英文书,而由于国内的gradle翻译资料不全,所以特次开辟专栏,翻译gradle for android这本书,同时添加自己的心得体会以及在实际工作上的实战,希望大家能够喜欢. 如 ...
- [android开发篇]使用系统权限流程
1 声明权限https://developer.android.com/training/permissions/declaring.html 每款 Android 应用都在访问受限的沙盒中运行.如果 ...
- 我的Android第一章:Android环境搭建
今天是Android第一天的学习,对于学习任何一门课程时我们都要对该课程要有基本的了解和认识,了解该课程学点什么内容,学了这门知识我门能够做些什么,这也是对于我们这些刚入门的学习人员来说是一个必须要弄 ...
- 浅谈TCP IP协议栈(三)路由器简介
读完这个系列的第一篇浅谈TCP/IP协议栈(一)入门知识和第二篇浅谈TCP/IP协议栈(二)IP地址,在第一篇中,可能我对协议栈中这个栈的解释有问题,栈在数据结构中是一种先进后出的常见结构,而在整个T ...
- .net程序员转战android第一篇---环境部署
对于.net开发人员去写java,可谓说是见山是山, 因为太多的相同; 最近段时间因工作因素,将项目中部分功能需要移植到android平台上,经过半个月的煎熬,终于搞完了. 文章中将直观记录我做项目中 ...
- 意犹未尽而来的第一篇Android 逆向
游戏:咕噜王国大冒险 平台:android 目标: 1. 去除乱七八糟提示(本篇目标) 2. 去除google弹窗 3. 破解“all stages” 破文开始: 1. 使用APKIDE反编译:搜索字 ...
随机推荐
- 在为知笔记中使用JQuery
为知笔记很好用,深得我心.原来还有一点想法,创建一些自己的模板,用的更加深入一些.后来发现,必要性不大,笔记自带的功能足够满足大多数的需求,如果画蛇添足,反而不利于跨电脑,跨平台使用. 不过近期又有一 ...
- MAC下的命令操作
打印环境变量:echo $PATH设置环境变量:export PATH=$PATH:/usr/local/git/bin应用:在git-scm下载git2.0.1版本,图形安装后,直接在终端敲giv ...
- ASSIC码对照表
编码对应字符: ✔:\u2714✘:\u2718 <script type="text/javascript"> var aaa = "\u2718" ...
- 写给程序员和UI--Android的切图标准
最近总是有人在问我,Android怎么切图啊,怎么适配啊,不只是Android同行,还有很多新手ui设计师. 于是我就写篇文章,根据我们平时的开发经验,简单的介绍一下吧. 如果UI设计师以1920*1 ...
- j$(function() j$(document).ready 区别
$j(document).ready(function(){}); // 或者 $j(function(){}); 第一个是直接使用Jquery调用function,第二个是在文档加载完毕后才去调用 ...
- [转]mongodb与mysql相比的优缺点
原文地址:http://blog.sina.com.cn/s/blog_966e430001019s8v.html 与关系型数据库相比,MongoDB的优点:①弱一致性(最终一致),更能保证用户的访问 ...
- git常用命令-基本操作
git常用命令-基本操作 1) 新增文件 新增了Test_1.java git add Test_1.java git commit –m “新增了Test_1.java” git push ...
- TCP/IP 网络编程 (三)
server端未处理高并发请求通常採用例如以下方式: 多进程:通过创建多个进程提供服务 多路复用:通过捆绑并统一管理 I/O 对象提供服务 多线程:通过生成和客户端等量的线程提供服务 多进程serve ...
- [转载] Calculating Entropy
From: johndcook.com/blog For a set of positive probabilities pi summing to 1, their entropy is defi ...
- 在线制作h5
在线制作h5 官网:http://www.godgiftgame.com 在线制作h5首页预览效果图如下: 一.主要功能区域主要功能区域分布在上中左右三个地方,1.上面区域是功能选择区,包括图片素材. ...