zoukankan      html  css  js  c++  java
  • 精通Android开发 0

    准备写一个Android的教程,顺便复习巩固下自己的知识,主要参考的书是《精通Android 3 》

    1 环境搭建。

    以前准备入门一门语言的时候,环境的搭建会是件很头疼的事情。知道的人懒的说,不知道的找不到。

    以前开发Android的时候环境配置挺烦人的,下载Android,下载adt,配置adt,下载eclipse等,很麻烦。

    现在Android官网已经提供了配置好的全部的环境。

    http://developer.android.com/sdk/index.html

    With a single download, the ADT Bundle includes everything you need to begin developing apps:

    • Eclipse + ADT plugin
    • Android SDK Tools
    • Android Platform-tools
    • The latest Android platform
    • The latest Android system image for the emulator

    已经包涵了那些东西了。下载以后。打开里面有一个eclipse文件夹和sdk文件夹

    运行eclipse,点击Android sdk manager,选择下载需要的sdk版本。

    如果出现

    Fetching https://dl-ssl.google.com/android/repository/addons_list-2.xml


    解决办法:
    修改hosts文件。
    (1)windows下打开C:WindowsSystem32driversetc,以管理员身份编辑hosts文件,在最后添加:
    74.125.237.1 dl-ssl.google.com
    (2)linux下使用命令sudo vim /etc/hosts编辑hosts文件,同样在文件最后添加
    74.125.237.1 dl-ssl.google.com

    MAC更改host方法
      1、打开终端(terminal),输入:sudo vi /etc/hosts 
      2、输入系统密码 
      3、输入 i 进入编辑模式 
      4、编辑完成之后,按esc,输入 : wq 

    然后重新运行sdk manager,就可以下载了。

    2 创建工程

    直接一路next就可以了。运行的时候可以选择新建一个模拟器或者连接真机,或者使用Genymotion,我用了一次,感觉一般吧,挺麻烦的。我一般是直接用真机。

    3 Android应用程序结构

    我直接贴上截图了

     

    他的一段解释很好说,对于做j2ee的话挺好理解的:

    Android应用程序主要有3部分组成:应用程序描述文件,各种资源的集合,已经程序的源代码。

    其中资源对应jsp,源代码对应servlet,androidmanifest.xml文件对应web.xml。

     4 activity生命周期

    活动的生命周期
    维护一个Activity 的生命周期非常重要,因为Activity 随时会被系统回收掉。
    生命周期
    编写Android 平台的基本应用程序,跟编写桌面
    应用程序的难度,两者并没什么不同。甚至因为Android 平台拥有免费、跨平台的开发工具,
    使得Android 平台应用程序的开发更为单纯。
    但是请别忘了,Android 平台也是个手机作业系统。撇掉其他功能不谈,手机的特性,就是
    应该能随时在未完成目前动作的时候,离开正在使用的功能,切换到接电话、接收简讯模式...
    而且在接完电话回来应用程序时,还希望能看到一样的内容。
    现在使用者使用智能型手机,大多已习惯使用多工(Multi-Task)的作业系统(如Windows
    Mobile),可以在用手机听音乐的同时,也执行其他多个程序。同时执行多个程序有它的明
    显好处,但是也有它的严重的缺点。每多执行一个应用程序,就会多耗费一些系统存储器。
    而手机里的存储器是相当有限的。当同时执行的程序过多,或是关闭的程序没有正确释放掉
    存储器,执行系统时就会觉得越来越慢,甚至不稳定。
    为了解决这个问题,Android 引入了一个新的机制--生命周期(Life Cycle)。
    行程
    应用程序(一个个Activity)执行的状态称为行程(process)。在Android 作业系统中,每个应
    用程序都是一个行程。Android 系统平台(准确的说是Dalvik 虚拟机)会维护一个唯一的
    Activity 历史记录堆栈,并从旁观察每个应用程序行程。系统平台会依照系统的存储器状况,
    与Activity 的使用状态,来管理存储器的使用。
    Activity 类别除了负责运行程序流程,与操作界面元件之外,最重要的,就是它提供了开发
    者控制行程生命周期的函式。我们已经相当习惯在OnCreate(建立行程时的行为)函式中,加
    入我们对这个Activity 执行流程的控制。在前面遇到的范例中,我们并不需要对除了OnCreate
    之外的行为做出改变。不过理解行程的生命周期,将为我们继续深入Android 开发打下基础。
    为什么要了解生命周期
    Android 应用程序的生命周期是由Android 框架进行管理,而不是由应用程序直接控制。
    通常,每一个应用程序(入口一般会是一个Activity 的onCreate 方法),都会占据一个行程
    (Process)。当系统存储器即将不足的时候,会依照优先级自动进行行程(process)的回收。不
    管是使用者或开发者,都无法确定的应用程序何时会被回收。
    一个Activity 类别除了OnCreate 函式之外,还预先定义了OnPause(暂停行程时的行为)、
    OnResume(继续行程时的行为)等等的基本行为,当从一个Activity 切换到另一个Activity 的
    时候,原本的Activity 将经过一连串的状态改变。开发者可以在程序中添加一些各状态相对
    应的流程,每次Activity 改变状态时,就会执行相对应的流程。
    要让使用者有好的使用经验,Activity 需要在各个周期点上负责保管状态、恢复状态、传送
    资料等工作。
    Activity的状态
    Android 的虚拟机(VM)是使用堆栈(Stack based)管理。主要有四种状态:
    • Active(活动)
    • Paused(暂停)
    • Stopped(停止)
    • Dead(已回收或未启动)
    Active(活动)
    「Active」状态是使用者启动应用程序或Activity 后,Activity 运行中的状态。
    在Android 平台上,同一个时刻只会有一个Activity 处于活动(Active)或运行(Running)状态。
    其他的Activity 都处于未启动(Dead)、停止(Stopped)、或是暂停(Pause)的状态。
    Paused(暂停)
    「Paused」状态是当Activity 暂时暗下来,退到背景画面的状态。
    当我们使用Toast、AlertDialog、或是电话来了时,都会让原本运行的Activity 退到背景画面。
    新出现的Toast、AlertDialog 等界面元件盖住了原来的Activity 画面。Activity 处在「Paused」
    状态时,使用者无法与原Activity 互动。
    Stopped(停止)
    「Stopped」状态是有其他Activity 正在执行,而这个Activity 已经离开荧幕,不再动作的状
    态。
    透过长按「Home」钮,可以叫出所有处于「Stopped」状态的应用程序列表。
    在「Stopped」状态的Activity,还可以透过「Notification」来唤醒。「Notification」会在后面
    章节中解说。
    Dead(已回收或未启动)
    「Dead」状态是Activity 尚未被启动、已经被手动终止,或已经被系统回收的状态。
    要手动终止Activity,可以在程序中呼叫「finish」函式。我们在加入选单一章中已经提到过
    了。
    如果是被系统回收,可能是因为存储器不足了,所以系统根据存储器不足时的回收规则,将
    处于「Stopped」状态的Activity 所占用的存储器回收。
    存储器不足时的行为
    存储器不足时,Dalvak 虚拟机会根据其存储器回收规则来回收存储器:
    1 先回收与其他Activity 或Service/Intent Receiver 无关的行程(即优先回收独立的
    Activity)
    2 再回收处于「Stopped」状态的其他类型Activity(在背景等待的Activity)。最久没
    有使用的Activity 优先回收(比较官方的说法是"根据LRU 算法...")
    3 还不够?回收Service 行程
    4 快不行啦,关掉可见的Activity/行程
    5 关闭当前的Activity
    当系统缺存储器缺到开始「4.关掉可见的Activity/行程」时,大概我们换机子的时机也早该
    到啦!
     
    讲解
    我们为Activity 的各个状态加入了「Log」记录讯息。当模拟器运行时,我们可以透过「LogCat」
    工具来查看Activity 所处在的状态。上面的七个状态又可以归纳成三组:
    1.资源分配(Create/Destroy)
    完整的Activity 生命周期由「Create」状态开始,由「Destroy」状态结束。建立(Create)时分
    配资源,销毁(Destroy)时释放资源。
    2.可见与不可见(Start/ReStart/Stop)
    当Activity 运行到「Start」状态时,就可以在荧幕上看到这个Activity。相反地,当Activity
    运行到「Stop」状态时,这个Activity 就会从荧幕上消失。
    当使用者按下Back 按钮回到上一个Activity 时,会先到Restart 状态,再到一般的Start 状态。
    3.使用者能否直接存取荧幕(Resume/Pause)
    当有个Toast、AlertDialog、简讯、电话等讯息乱入时,原来的Activity 会进入「Pause」状
    态,暂时放弃直接存取荧幕的能力,被中断到背景去,将前景交给优先级高的事件。当这些
    优先级高的事件处理完后,Activity 就改进入「Resume」状态,此时又直接存取荧幕。
    Activity运作流程
    由实际运行的记录来看,我们可以归纳出所有Android 应用程序都遵循的动作流程:
    一般启动
    onCreate-> onStart-> onResume
    启动一个Activity 的基本流程是:分配资源给这个Activity(Create 状态),然后将Activity
    内容显示到荧幕上(Start 状态)。在一切就绪后,取得荧幕的控制权(Resume 状态),使用
    者可以开始使用这个程序。
    呼叫另一个Activity
    onPause(1) -> onCreate(2) -> onStart(2) - onResume(2) -> onStop(1)
    这是个先冻结原本的Activity,再交出直接存取荧幕能力( Pause 状态)的过程。直到Activity 2
    完成一般启动流程后,Activity 1才会被停止。
     
    回原Activity
    onPause(2) -> onRestart(1) -> onStart(1) -> onResume(1) -> onStop(2) -> onDestroy(2)
    点Back 按钮可以回到原本的Activity。
    退出结束
    onPause-> onStop-> onDestroy
    如果程序中有直接呼叫「finish」函式来关闭Activity 的话,系统假设我们很确定我们在做
    什么,因此会直接跳过先冻结(Freeze)的阶段,暂停(Pause),停止(Stop),然后销毁(Destroy)。
    回收后再启动
    onCreate-> onStart-> onResume
    被回收掉的Activity 一旦又重新被呼叫时,会像一般启动一样再次呼叫Activity 的onCreate
    函式。
    当我们使用「Android」手机一阵子,在手机上已经执行过多个应用程序。只要按下「Back」
    (返回)键,「Android」就会开启最近一次开启过的Activity。
    这时我们要是按下多次「Back」(返回)键,理论上迟早会返回到某个已经销毁(Destroy)
    的Activity。这时会发生什么事呢?
    如果应该开启的Activity 已经被回收了,那么这个Activity 会再次被建立( Create)出来。
    再次被建立出来的Activity,当然会跟原本我们开启过的Activity 不一样啦。
    所以如果要让再次被建立出来的Activity 看起来跟原本开启过的一样,那么在Activity 之间
    切换时,我们就要留意保留资料:最好在每次Activity 运行到「onPause」或「onStop」状态
    时先保存资料,然后在「onCreate」时将资料读出来。

    参考下我的另外一篇博客http://blog.csdn.net/jjdhshdahhdd/article/details/11224931

  • 相关阅读:
    【转】二叉树中两个节点的最近的公共父节点
    查找最小的k个元素
    字符串的排列
    php字符串操作
    Android手机app启动的时候第一个Activity必须是MainActivity吗
    ASP.NET网站前端页面的复制
    MySQL字段类型说明
    转:Zend Server Community Edition(CE) 安装手记
    数据库远程导入导出步骤
    转:两种转换mysql数据编码的方法latin1转utf8
  • 原文地址:https://www.cnblogs.com/aosting/p/3471370.html
Copyright © 2011-2022 走看看