美文网首页
物联网实训平台:Activity开发

物联网实训平台:Activity开发

作者: mank | 来源:发表于2018-03-20 07:57 被阅读0次

    实现登录功能
    任务目标:
    1.掌握Activity的创建
    2.掌握Activity的启动和声明
    3.掌握为按钮控件添加监听事件
    任务陈述:
    本任务使用单元2的任务7中的设计界面作为跳转后的界面。当用户在智慧城市登录界面点击登录时,页面跳转到智慧城市的主界面。本任务主要是完成Android中两个页面之间的跳转功能。
    任务学习:
    1.Activity简介:
    Activity是Android组件中最基本也是最为常见用的四大组件(Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器)之一[1] 。Activity是一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项任务。Activity中所有操作都与用户密切相关,是一个负责与用户交互的组件,可以通过setContentView(View)来显示指定控件。在一个android应用中,一个Activity通常就是一个单独的屏幕,它上面可以显示一些控件也可以监听并处理用户的事件做出响应。Activity之间通过Intent进行通信。
    2.Activity的创建:
    如何创建一个Activity:必须创建一个Activity的 子类,在子类中需要实现Activity状态在生命周期中切换时系统回调的函数(onCreate、onStart、onResume、onPause、onStop、onDestroy),当然并非所有的函数都需要重新实现。其中两个比较重要的函数为onCreate和onPause:
    onCreate(),此方法必须要重写。系统调用此方法创建activity,实现该方法是你初始化你所创建Activity的重要步骤。其中最重要的就是调用 setContentView() 去定义你的要展现的用户界面的布局。
    onPause(),当系统任务用户离开此界面时会调用此方法,此时并非销毁一个Activity。通常在这里就要处理一些持久超越用户会话的变化,比如:数据的保存。
    为了保证流畅的用户体验和处理,你可以调用其他的回调函数来使你的Atctivity停止或销毁。在onStop()方法中,一般做一些大资源货对象的释放,如:网络或者数据库连接。可以在onResume时再加载所需要资源。


    创建Activity

    一个Activity创建完成后,为了它可以访问系统必须要声明注册它到应用的AndroidManifest.xml文件中:


    image.png
    3.Activity的跳转:
    通过调用startActivity(intent)启动Activity,intent用来准确的描述你要启动的Activity。
    image.png
    4.基于监听事件的处理机制:
    android对监听事件的处理可以分为4种:
    第一种:内部类作为事件监听器类
    内部类有两种:分别为匿名内部类和不匿名内部类,其中大部分事件监听类都是使用匿名内部类。
    其中的好处有:
    1.可以在当前类中复用该监听器类
    2.可以自由访问外部类的所有界面组件
    第二种:外部类作为事件监听器类
    比较少见,其中优点为:
    1.当某个事件监听器被多个GUI界面共享,且主要是完成某种业务逻辑的实现
    其中确定为:
    1.不利于提高程序的内聚性
    2.不能自由访问创建GUI界面类的组件,编程不够简洁

    第三种:Activity本身作为事件监听器
    可以直接在Activity中定义事件处理方法
    其中优点为:非常简洁
    缺点为:
    1.这种形式可能造成程序结构混乱。Activity的主要职责应该是完成界面初始化;但此时还需包含事件处理器方法,从而引起混乱
    2.如果activity界面类需要实现监听器接口,让人感觉比较怪异。
    第四种:直接绑定到标签
    在布局中要发送事件源中定义一个:
    android:onClick="clickHandler"
    然后在该布局对应的Activity定义一个 void clickHandler(void source)方法。
    1.复习并通过单元2所学习的知识在res/layout文件夹中新建activity_login.xml文件,完成登录界面和主界面的设计,如图3-1和图3-2所示。


    登录界面
    image.png
    2.在src文件中新建LoginActivity类,并重写Oncreat()方法。
    3.声明一个按钮控件并通过通过findViewById找到布局中的界面再强制传唤成Button类型赋值给mBtnLogin绑定控件设置按钮的单击事件。
    4.在AndroidManifest.xml中定义声明Activity。
    通过代码可以理解Acitvity的跳转与为按钮添加监听事件的过程,充分理解了一个带界面的android应用程序可以由一个或者多个Activity组成,至于这些Activity是如何工作的或者他们之间有什么依赖关系,则完成取决于应用程序的业务逻辑。每个Activity都会有一个窗口,在默认情况下,这个窗口是充满整个屏幕的,也可以将窗口变得比手机屏幕小,或者悬浮在其他窗口上面。

    主页面的生命周期
    任务目标:
    1.掌握Activity的生命周期
    任务陈述:
    本任务使用单元2的任务7中的界面设计,用日志输出的方式,展现Activity各个生命周期。
    Activity的生命周期:
    在Acivity从创建到销毁的过程中需要在不同的阶段调用7个生命周 期的方法。这7个生命周期方法定义如下:
    Protected void onCreat(Bundle savedInstancedState)
    1.启动Activity:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态。
    Protected void onStart()
    2.当前Activity被其他Activity覆盖其上或被锁屏:系统会调用onPause方法,暂停当前Activity的执行。
    Protected void onResume()
    3.当前Activity由被覆盖状态回到前台或解锁屏:系统会调用onResume方法,再次进入运行状态。
    Protected void onPause()
    4.当前Activity转到新的Activity界面或按Home键回到主屏,自身退居后台:系统会先调用onPause方法,然后调用onStop方法,进入停滞状态。
    Protected void onStop()
    5.用户后退回到此Activity:系统会先调用onRestart方法,然后调用onStart方法,最后调用onResume方法,再次进入运行状态。
    Protected void onRestart()
    6.当前Activity处于被覆盖状态或者后台不可见状态,即第2步和第4步,系统内存不足,杀死当前Activity,而后用户退回当前Activity:再次调用onCreate方法、onStart方法、onResume方法,进入运行状态。
    Protected void onDestroy()
    7.用户退出当前Activity:系统先调用onPause方法,然后调用onStop方法,最后调用onDestory方法,结束当前Activity。
    上面的7个生命周期方法分别在4个阶段按一定得顺序进行调用,这4个阶段如下:
    1.开始Activity:在这个阶依次执行3个生命周期方法,分别是onCreat、onStart和onResume。
    2.Activity失去焦点:如果在Activity获得焦点的情况下进入其他的Activity或应用程序,当前的Activity会失去焦点。在这一阶段会依次执行onPause和onStop方法。
    3.Activity重新获得焦点:如果Activity重新获得焦点,会依次执行3个生命周期方法,分别是onRestart、onStart和onResume。
    4.关闭Activity:当Activity被关闭时系统会依次执行3个生命周期方法,分别是onPause、onStop、onDestory。
    如果在这4个阶段执行生命周期方法的过程中不发生状态的改变,系统会按上面的描述依次执行这个4个阶段中的生命周期方法,但如果在执行过程中改变了状态,系统会按更复杂的方式调用生命周期的方法。
    在执行的过程中可以改变系统的执行轨迹的生命周期的方法是onPause和onStop。如果在执行onPause方法的过程中Activity重新获得了焦点,然后又失去了焦点,系统将不会再执行onStop方法,而是按照如下顺序执行相应的生命周期方法:
    onPause -> onResume -> onPause
    如果在执行onStop方法的过程中Activity重新获得了焦点,然后又失去焦点,系统将不会执行onDestroy方法,而是按如下顺序执行相应的生命周期方法:
    onStop -> onRestart -> onStart -> onResume -> onPause -> onStop
    下图描述了Activity从创建到销毁以及中间状态的改变后调用生命周期方法的过程


    image.png
    1. 新建项目工程引用单元2任务7的界面文件实现界面设计,如下图所示。


      image.png
    2. 修改ActivityDemo7.java重写以上的七种方法,主要用Log打印代码。
    3. 运行上述工程,效果图如下图所示(没什么特别的)。


      image.png

      在Window->Show View会出来一个对话框,如图3-6,当我们点击Ok按钮时,会在控制台窗口出现LogCat视窗如图3-7所示:


      image.png
      image.png
      image.png

      当我们打开应用时先后执行了onCreate()->onStart()->onResume三个方法,看一下LogCat视窗如下所示:


      image.png
      当我们按BACK键时,我们这个应用程序将结束,这时候我们将先后调用onPause()->onStop()->onDestory()三个方法,如下所示:
      image.png
      当我们打开应用程序时,比如浏览器,我正在浏览NBA新闻,看到一半时,我突然想听歌,这时候我们会选择按HOME键,然后去打开音乐应用程序,而当我们按HOME的时候,Activity先后执行了onPause()->onStop()这两个方法,这时候应用程序并没有销毁。如下所示:
      image.png
      而当我们再次启动ActivityDemo7应用程序时,则先后分别执行了onRestart()->onStart()->onResume()三个方法,如下所示:
      image.png
      调用系统功能

      任务目标:
      1.掌握Android系统的信使:intent
      2.掌握Activity的隐式启动
      任务陈述:
      当用户点击拍码购物的按钮后系统调用照相机功能进行二维码扫描。
      Intent的中文意思是“意图,意向”,在Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。Intent不仅可用于应用程序之间,也可用于应用程序内部的Activity/Service之间的交互。因此,可以将Intent理解为不同组件之间通信的“媒介”专门提供组件互相调用的相关信息。
      Intent有以下几个属性:
      动作(Action),数据(Data),分类(Category),类型(Type),组件(Compent)以及扩展信(Extra)。其中Intent中的四个重要属性——Action、Data、Category、Extras
      1.Intent的Action属性
      Action是指Intent要完成的动作,是一个字符串常量。Intent也内含了很多默认的action。
      2.Intent的Data属性
      Intent的Data属性是执行动作的URI和MIME类型,不同的Action有不同的Data数据指定。比如:ACTION_EDIT Action应该和要编辑的文档URI Data匹配,ACTION_VIEW应用应该和要显示的URI匹配。
      3.Intent的Category属性
      Intent中的Category属性是一个执行动作Action的附加信息。比如:CATEGORY_HOME则表示放回到Home界面,ALTERNATIVE_CATEGORY表示当前的Intent是一系列的可选动作中的一个。

    4. Extras属性主要用于传递目标组件所需要的额外的数据。通过putExtras()方法设置。常用值如下所示:
      任务实现:
      1.在Elipse下新建命为AndroidDome3_2的Android项目。
      2.修改res/layout文件夹下的activity_main.xml文件,进行如下图界面设置。


      image.png

      3.声明Button控件,和拍照标识。
      4.修改src目录下的MainActivity.java文件,并自定义一个initView()方法实现控件的初始化,同时为按钮添加监听事件。
      5.实现调用系统自身照相机功能。

    相关文章

      网友评论

          本文标题:物联网实训平台:Activity开发

          本文链接:https://www.haomeiwen.com/subject/ieapqftx.html