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. Hadoop关于Wrong FS错误

    关于使用java api上传文件. 在定义一个FileSystem变量的时候伪分布式和单机版的方法是不一样的,单机版使用的是FileSystem类的静态函数 FileSystem hdfs = Fil ...

  2. c# combobox 绑定枚举方式

    建立一个类 : using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...

  3. 1355: [Baltic2009]Radio Transmission[循环节]

    1355: [Baltic2009]Radio Transmission Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 796  Solved: 538 ...

  4. npm 全局配置放在c盘/用户/当前用户/目录下

    prefix=D:\Users\Ed\AppData\Roaming\nodejs\npm-globalcache=D:\Users\Ed\AppData\Roaming\npm-cacheregis ...

  5. ElasticSearch架构思考(转)

    一个ElasticSearch集群需要多少个节点很难用一种明确的方式回答,但是,我们可以将问题细化成一下几个,以便帮助我们更好的了解,如何去设计ElasticSearch节点的数目: 打算处理多少数据 ...

  6. maven snapshot和release版本的区别(转)

    在使用maven过程中,我们在开发阶段经常性的会有很多公共库处于不稳定状态,随时需要修改并发布,可能一天就要发布一次,遇到bug时,甚至一天要发布N次.我们知道,maven的依赖管理是基于版本管理的, ...

  7. DataGridView自定义RichTextBox列

    https://www.codeproject.com/Articles/31823/RichTextBox-Cell-in-a-DataGridView-2 RichText是用图片显示的,当Sel ...

  8. Java性能分析方法

    Java调优经验 http://www.rowkey.me/blog/2016/11/02/java-profile/

  9. hashMap的线程不安全

    hashMap是非线程安全的,表现在两种情况下: 1 扩容: t1线程对map进行扩容,此时t2线程来读取数据,原本要读取位置为2的元素,扩容后此元素位置未必是2,则出现读取错误数据. 2 hash碰 ...

  10. <ReversingEngineering>关于windows32位系统下的dll注入技术经验汇

    上个学期把自己闷在图书馆一直在看关于逆向工程技术方面的书,从入门到初级,现在也敢说自己一条腿已经迈进了这片知识的大门里,因为该博客刚开通先将一些经验记录下来,也是留给自己一方面做个参照. <逆向 ...