Android学习笔记(二):安装环境中已经有相应的内容。看看何为新。这是在source网站上的Android架构图,和标准图没有区别,只是这张图颜色好看多了,录之。本笔记主要讲述Android开发环境。

一些基础概念

View。View是UI基础构建元素。View也可作为view容器,即有层次嵌套。你所看到的一切UI都是view。

Activity。Activity通常是应用的一屏,通常含有一个或多个View(虽然不是必须),顾名思义,是帮助用户处理一件事的活动。应用通常有多个activity。

Fragment。类似sub-activity。一个activity可以在屏幕上显示一个或多个fragment。

Intent。意图去做某事,它概念含义丰富,我认为学习(一)中就讲得很好,Intent是一个进程内和进程间唤醒组件的机制。它可以进行广播消息,开启服务,启动acitivity,调起系统应用(显示网页、显示联系人列表、拨打号码,接听电话等)。系统也使用intent来提醒应用有特定的事件(例如有短信)发生。

Content Provider。Android定义的一个的共享数据机制标准,支持应用内和应用间的数据共享,隐藏了具体的存储、结构和实现。

Service。后台进程。Android提供两种服务,local services只能又本应用访问,而remote service则可有设备的其他应用访问。

使用模拟器AVD

连接真实设备

Android模拟器提供了很好调测target,但是更好的方式是采用真实设备。我在Linux和Windows下都有开发环境。Windows下很简单,以三星手机为例,当你连接USB并打开开发者USB调测模式时,自动安装新硬件,则可以识别。安装后通过命令行来查看是否成功识别。

但是我一连手机到Windows,360就在叫,万一开个调测模式,不知道是否会干什么坏事,所有还是在Linux吧。Linux则要对usb进行设置。

1、在/etc/udev/rules.d/51-android.rules中增添所连接设备的说明,下面是该文件的例子。厂家ID可以在http://developer.android.com/tools/device.html#VendorIds中查询。

$ cat 51-android.rules 
## HTC 
SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0666", OWNER="wei" 
## Samsung 
SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", MODE="0666", OWNER="wei" 
## ZTE 
SUBSYSTEM=="usb", ATTR{idVendor}=="19d2", MODE="0666", OWNER="wei" 
## Huawei 
SUBSYSTEM=="usb", ATTR{idVendor}=="12d1", MODE="0666", OWNER="wei"

2、重新启动udev,如下。如果你手机在已打开USB调测模式的情况下一直连着电脑,建议重新插拔一下USB线。

$ sudo /etc/init.d/udev restart

3、同样可以用$adb devices命令查看连接情况

wei@wei:~/developer/adt-bundle-linux-x86-20130522/sdk/platform-tools$ ./adb devices
List of devices attached 
HC27KMG00987    device

在eclipse可直接将应用部署上去。Android是为开发者设计的平台。

生命周期

Android每个应用是一个进程,有自己的虚拟机对象,确保存贮保护安全。系统通过应用优先级别的控制来决定在资源紧张时关闭哪个应用。

Android针对小屏提供了应用的无缝切换,这也导致应用生命周期管理有些复杂,例如你从应用A切换到应用B,需要保存A的数据,当从应用B返回应用A时,用户可以继续原有的操作。这实际是关于多进程如何在资源有限的手机上的运作机制。推荐复习Android学习笔记(三三):Activity生命周期

状态虽然多,但也很好记忆。要区分的是可视和可互动状态。如果前面可能有弹框,有通知等情况,遮挡了activity的部分,activity不能互动,但仍处于可视状态。也就是activity处于前台,但可能不是最top那个,不一定能与用户互动。一般来讲,只需处理onCreate( )、onResume( )和onPause( )这几个方法即可,不很准确地描述着三个分别表示开始,激活状态,非激活状态。

当应用中任何一个activity启动时,就可以获得app的context。

调测

LogCat是最常用的调测工具,通过Window -> Show View -> Other... -> Android -> LogCat设置。LogCat打印调测信息,有Log.e,Log.w,Log.i,Log.d,Log.w共5个级别,可以设置不同的tag,在大型项目进行log过滤,非常有用,在编写小程序时,也尽量养成好习惯。在LogCat窗口,也可以显示System.out.println( )。

ERROR, WARN, INFO, DEBUG, VERBOSE是Log的5个级别,顾名思义,优先级别从高低。由于log也是需要消耗系统资源的,因此一般verbose只用在开发过程,不应被编译到在最后发布的应用中。Debug会编译进应用,但不运行,除非设备处于debug调测状态。Error、warn和info则保持运行。要善于使用这几个级别。

Wei :在Android Reference这样写道:Verbose should never be compiled into an application except during development. Debug logs are compiled in but stripped at runtime. Error, warning and info logs are always kept. 我的理解是Android能根据等级,针对资源优化进行处理,verbose不会编译到发布的apk中,而debug可以编译进去,但是只有在phone处于调测模式下才运行,一般运行情况下不会执行。而error,warn,debug作为正常log信息在普通运行状态下也会处理。但从网上的资料看,Log.v和Log.d在实际情况与这描述不同,并作为bug进行上报。安全起见,verbose应该在正式发布之前人工去掉(加个开关等多种方式,继承Log类等等),而对于debug,可以通过if(BuildConfig.Debug) Log.d(…)来进行处理。BuildConfig是自动生成的文件,与R.java类似,可用于:if(BuildConfig.Debug) { 写入只在DEBUG模式下运行的代码}。这要求ADT v17或以上版本。

相关链接: 我的Android开发相关文章

转自http://blog.csdn.net/flowingflying/article/details/9055809

【转】Pro Android学习笔记(二):开发环境:基础概念、连接真实设备、生命周期的更多相关文章

  1. Android学习笔记1——开发环境配置

    一.JDK配置 Android是基于Java进行开发的,首先需要在电脑上配置JDK(Java Development Kit).在http://www.androiddevtools.cn/下载对应系 ...

  2. 【转】 Pro Android学习笔记(五二):ActionBar(5):list模式

    可以在action bar中加入spinner的下来菜单,有关spinner,可以参考Pro Android学习笔记(二十):用户界面和控制(8):GridView和Spinner. list的样式和 ...

  3. 【转】 Pro Android学习笔记(二二):用户界面和控制(10):自定义Adapter

    目录(?)[-] 设计Adapter的布局 代码部分 Activity的代码 MyAdapter的代码数据源和构造函数 MyAdapter的代码实现自定义的adapter MyAdapter的代码继续 ...

  4. 【转】 Pro Android学习笔记(八二):了解Package(1):包和进程

    文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowingflying/ 在之前,我们已经学习了如何签发apk,见P ...

  5. 【转】 Pro Android学习笔记(四二):Fragment(7):切换效果

    目录(?)[-] 利用setTransition 利用setCustomAnimations 通过ObjectAnimator自定义动态效果 程序代码的编写 利用fragment transactio ...

  6. 【转】 Pro Android学习笔记(二九):用户界面和控制(17):include和merge

    目录(?)[-] xml控件代码重用include xml控件代码重用merge 横屏和竖屏landsacpe portrait xml控件代码重用:include 如果我们定义一个控件,需要在不同的 ...

  7. 【转】Pro Android学习笔记(二五):用户界面和控制(13):LinearLayout和TableLayout

    目录(?)[-] 布局Layout 线性布局LinearLayout 表格布局TableLayout 布局Layout Layout是容器,用于对所包含的view进行布局.layout是view的子类 ...

  8. 【转】Pro Android学习笔记(三十):Menu(1):了解Menu

    目录(?)[-] 创建Menu MenuItem的属性itemId MenuItem的属性groupId MenuItem的属性orderId MenuItem的属性可选属性 Menu触发 onOpt ...

  9. 【转】 Pro Android学习笔记(六七):HTTP服务(1):HTTP GET

    目录(?)[-] HTTP GET小例子 简单小例子 出现异常NetworkOnMainThreadException 通过StrictMode进行处理 URL带键值对 Andriod应用可利用ser ...

  10. 【转】 Pro Android学习笔记(五五):调试和分析(3):adb命令、模拟器控制台和StrictMode

    目录(?)[-] adb命令 模拟器Console StrictMode adb命令 我们在学习SQLite的使用,介绍过部分adb命令的使用,见Pro Android学习笔记(五):了解Conten ...

随机推荐

  1. pycharm 5 注册码

    BIG3CLIK6F-eyJsaWNlbnNlSWQiOiJCSUczQ0xJSzZGIiwibGljZW5zZWVOYW1lIjoibGFuIHl1IiwiYXNzaWduZWVOYW1lIjoiI ...

  2. CI学习总结

    1.CI自定义配置文件: 如:config/test.php <?php $config['test']['good'] = array('aa','bb'); 在控制器中这样调用: <? ...

  3. 【BZOJ4861】[Beijing2017]魔法咒语 矩阵乘法+AC自动机+DP

    [BZOJ4861][Beijing2017]魔法咒语 题意:别看BZ的题面了,去看LOJ的题面吧~ 题解:显然,数据范围明显的分成了两部分:一个是L很小,每个基本词汇长度未知:一个是L很大,每个基本 ...

  4. 在做RTSP摄像机H5无插件直播中遇到的对接海康摄像机发送OPTIONS心跳时遇到的坑

    我们在实现一套EasyNVR无插件直播方案时,选择了采用厂家无关化的通用协议RTSP/Onvif接入摄像机IPC/NVR设备,总所周知,Onvif是摄像机的发现与控制管理协议,Onvif用到的流媒体协 ...

  5. JAVA数据类型(转)

     java中数据的基本类型分为: 基本数据类型和引用数据类型,对此不多介绍:   接下来讨论一下java中数据类型存储在哪     基本数据类型存储在哪,取决于基本类型在哪声明:          1 ...

  6. 九度OJ 1154:Jungle Roads(丛林路径) (最小生成树)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:832 解决:555 题目描述: The Head Elder of the tropical island of Lagrishan has ...

  7. 我的Android进阶之旅------>如何在多个LinearLayout中添加分隔线

    如果要适合于所有的Android版本,可以在多个LinearLayout放置用于显示分隔线的View.例如,放一个ImageView组件,然后将其背景设为分隔线的颜色或图像,分隔线View的定义代码如 ...

  8. 【C语言天天练(十)】结构体

    引言:数据常常以成组的形式存在.在C中,使用结构能够把不同类型的值存放在一起. 结构的声明有两种 1.struct SIMPLE{ int a; char b; float c; };然后用标签SIM ...

  9. ES6 Fetch API HTTP请求实用指南

    本次将介绍如何使用Fetch API(ES6 +)对REST API的 HTTP请求,还有一些示例提供给大家便于大家理解. 注意:所有示例均在带有箭头功能的 ES6中给出. 当前的Web /移动应用程 ...

  10. 20145239 杜文超 实验四 Android开发基础

    20145239实验四 Android开发基础 实验内容 基于Android Studio开发简单的Android应用并部署测试 了解Android组件.布局管理器的使用 掌握Android中事件处理 ...