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修改主机名遇到的坑

    正确的修改方式 CentOS修改主机名(hostname) 需要修改两处:一处是/etc/sysconfig/network,另一处是/etc/hosts,只修改任一处会导致系统启动异常.首先切换到r ...

  2. Ejabberd作为推送服务的优化手段(转)

    AVOS Cloud目前还在用Ejabberd做Android的消息推送服务.当时选择Ejabberd,是因为Ejabberd是一个发展很长时间的XMPP实现,并且基于Erlang,设想能在我们自主研 ...

  3. 【Android】图片(文件)上传的请求分析结构

    怎么在android中上传文件,即怎么用Java向服务器上传文件.上传图片,这是个老问题了,在网上能搜到现成的代码,很多朋友用起来也比较熟了,但是为什么这么写,可能很多朋友并不清楚,这篇文章就来分析一 ...

  4. React中key的必要性与使用

    React这个框架的核心思想是,将页面分割成一个个组件,一个组件还可能嵌套更小的组件,每个组件有自己的数据(属性/状态);当某个组件的数据发生变化时,更新该组件部分的视图.更新的过程是由数据驱动的,新 ...

  5. SWT经常使用组件

    1button组件(Button) (1)Button组件经常使用样式 SWT.PUSHbutton SWT.CHECK多选button SWT.RADIO单选button SWT.ARROW箭头bu ...

  6. python 基础 8.3 match方法和search方法

    一,正则对象的split 方法 split(string[,maxsplit]) 按照能够匹配的字串讲string 分割后返回列表.maxsplit 用于指定最大分割次数,不指定将全部分割.来查找符合 ...

  7. MarkdownPad - The Markdown Editor for Windows http://markdownpad.com/

    MarkdownPad - The Markdown Editor for Windows http://markdownpad.com/

  8. 【题解】P3599 Koishi Loves Construction

    [题解]P3599 Koishi Loves Construction \(\mod n\) 考虑如何构造,发现\(n\)一定在第一位,不然不行.\(n\)一定是偶数或者是\(1\),不然 \(n|\ ...

  9. 如何使用RadioGroup和RadioButton实现FragmentTabHost导航效果?

    目录: 一.概述 最近在做一个新闻类结合社区的APP的时候,需要添加一个侧滑菜单的效果,考虑到可以使用DrawerLayout布局,但是问题是使用了 DrawerLayout布局后,主页内容应该是一个 ...

  10. 获取系统 SID

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/hadstj/article/details/26399533 获取系统 SID ((gwmi win ...