安卓系统视力保护程序的实现方案

更新时间:2020-01-19 来源:工程论文 点击:

【www.rjdtv.com--工程论文】

摘要:用户可以在免费手机平台Android上,开发各种对自身使用的APK应用文件,在开发应用程序过程中,程序员可以使用Service开发需在后台执行长时间运行操作,并且不提供用户界面的应用程序组件。重点讲述视力保护程序使用Service的过程,该过程首先定义TimeService类和TimeActivity类,关键是在AndroidManifest.xml文件中增加Activity和Service配置,以此调用TimeService的过程而启动服务和停止服务。
  
  关键词:Service;视力保护程序;Started Service.
  
  1基本概念。
  
  1.1 Service应用简介。
  
  Service(服务)是能够在后台执行长时间运行操作,并且不提供用户界面的应用程序组件,它是用于在后台完成用户指定的操作,可以用于音乐播放器、文件下载工具等应用程序[1].用户可以使用其他控件来与进行通信。当用户切换到其他应用程序时,服务依然可以在后台运行,其他应用程序组件可以绑定服务,进程间可以相互通信。
  
  例如,服务能在后台处理网络事务、播放音乐、执行文件I/O或者与ContentProvider通信。
  
  1.2视力保护程序。
  
  视力保护程序是一个保护眼睛的手机软件,如果用户当前环境光照强度,智能调节屏幕亮度、实时的保护用户的眼睛,让用户保持最健康的用眼习惯,使眼睛视力总是处于最好状态。
  
  2视力保护程序的实现方案。
  
  2.1视力保护程序的实现目的。
  
  视力保护程序是一个保护眼睛的手机软件,软件会告诉用户用怎样的方法,可以缓解眼睛疲劳或者其他的眼部问题,用户也能设置提醒,告诉自己什么时候该好好活动休息一下了,达到实时感应的效果。
  
  2.2项目实现2.2.1项目开发环境。
  
  开发APK应用程序,对硬件要求较高,Android SDK全部下载大概需要占用4GB硬盘空间,由于开发过程中需要反复重启模拟器,而每次重启都会消耗几分钟时间(视机器配置而定)。
  
  2.2.2技术使用。
  
  (1)Service分类。
  
  Service(服务)是从本质上分为两种类型Started(启动)和Bound(绑定)。当应用程序组件通过调用Started Service时,Service为Started状态;当调用bindService()时,Service为bound状态。
  
  (2)创建Started Service.
  
  当用户打开 音 乐播 放器、文件下 载 工 具 等 应 用 程 序时,Service可以在后台完成用户的操作。用户可以使用其他控件来与Service进行通信。
  
  当Service为“started”时,Service可以在后台一直运行,因为其生命周期与启动它的组件无关,所以即使启动它的服务组件被销毁。当服务完成任务后,可以通过stopSelf()或者由其他组件调用stop Service()停止服务。
  
  Activity组件可以通过startService()和传递Intent对象来启动服务,服务可以通过onStartCommand()方法接收Intent.
  
  Intent对象中包含了服务和服务中所包含的全部数据[2].
  
  (3)继承IntentService类。
  
  大多数启动服务没有必要处理多个请求,因此提出了类。 程 序 员 可 以 使 用IntentService类 使 用 了onStartCommand()方法、onHandleIntent()方法、onBind()方法和onStartCommand()方法。
  
  (4)继承Service类使用。
  
  IntentService类简化启动服务的实现,然而,如果需要让服务处理多个线程(取代使用工作队列处理启动请求),则可以继承Service类来处理各个Intent[3].对于每次启动请求,它使用工作线程来执行任务,并且每次处理一个请求。
  
  (5)启动服务。
  
  程序员可以通过Activity启动服务,也可以通过其他应用程序组件,传递Intent对象到startService()方法启动服务。
  
  Android系统调用服务的onStartCommand()方法并将传递给它。
  
  startService()方法立即返回,然后系统调用服务的onStartCommand()方法。如果服务还没有运行,系统首先调 用onCreat()方 法,接 着 调 用onStartCommand()方法。
  
  当服务没有提供绑定时,Intent应用程序组件和服务之间,唯一的通信模式是StartService()。然而,如果开发人员需要服务返回结果,则启动该服务的客户端,能为广播创建pendingIntent(使用getBroadcast()方法),并通过启动服务的Intent进行发送。服务接下来便能使用广播来发送结果。 启 动 服 务 如 果 被 多 次 请 求,则Service的onStartCommand()方法会被多次调用。
  
  (6)停止服务。
  
  启动服务必须管理自己的生命周期,即系统不会停止或 销 毁 服 务,除 非 系 统 必 须 回 收 系 统 内 存,而 且 在onStartCommand()方法返回后,服务继续运行。
  
  Service如何停止服务呢?它可以调用stopSelf()方法停止自身和调用stopService(),当调用以上两种方法请求时,系 统 会 尽 快 销 毁 服 务。 如 果 同 时 遇 到 多 个onStartCommand()请求时,系统不会立刻停止服务,因为可能会收到新的启动请求。
  
  为了解决这个问题,开发人员可以使用stopSelf(int)方法,来确保停止服务的请求总是基于最近收到的启动请求,并将启动请求的ID传递给停止请求。这样,如果服务在调用stopSelf(int)方法前接收到新启动请求,会因ID匹配而不停止服务。应用程序应该在任务完成后停止服务,来避免系统资源浪费和电池消耗。即使某些情况下绑定服务,只要调用onStartCommand()方法就必须停止服务。
  
  (7)管理Service的生命周期。
  
  用户经常在不知情的情况下,服务在后台运行。开发人员需明白服务如何销毁,因此提出了服务的生命周期。
  
  服务的生命周期可以分成两个不同的路径:
  
  Started Service:
  
  当其他组件调用startService()方法时,服务被创建。当服务停止时,系统将其销毁;Bound Service:当其他组件调用bindService()方 法 时,服 务 被 创 建。 接 着 客 户 端 通 过IBinder接口与服务通信。客户端通过unbindService()方法关闭连接。
  
  这两条路径并非完全独立,即开发人员可以绑定已经使用startService()方 法 启 动 的 服 务。
  
  stopService()和stopSelf()方法直到全部客户端解绑定时才能停止服务。
  
  3视力保护程序的设计过程。
  

  3.1在Eclipse中创建Android项目,当应用程序运行1分钟后,显示提示信息,提醒用户保护视力。
  
  修改res\layout目录中的main.xml文件,定义应用程序的背景图片和一个文本框。
  
  3.2在com.mingrisoft包中,定义TimeService类,它继承Service类。在onStart()方法中,使用Timer类完成延时操作,在一个新线程中创建消息,并且在60秒后运行。
  
  3.3在com.mingrisoft包中,定义TimeActivity类,它 继承Activity类,在onCreate()方法中,启动服务。
  
  3.4 修改AndroidManifest.xml文件,增加Activity和Service配置。
  
  3.5程 序编写完成,启动应 用 程 序,提 示1分 钟 后显示。
  
  4小结。
  
  本文重点讲述了开发视力保护程序使用Service的过程,整个过程,首先定义了继承Service类的TimeService类,和继承Activity类的TimeActivity类,两类的目的分别是用onStart()方法,实现60秒后运行通知信息和onCreate()方法实现启动服务,再者在AndroidManifest.xml文件中增加Activity和Service配置,以此调用TimeService的过程而启动服务和停止服务,同时程序员可根据需求将60秒时间更改,该视力保护程序简单而易操作。本文主要是通过视力保护程序开发的过程介绍了四大组件之一的Service(服务),服务可 以 分 成Started服 务 和Bound服 务 两 大 类。对 于Started服务,有两种实现方式:继承IntentService类和继承Service类;对于Bound服务,有两种实现方式:继承Binder类和使用Messenger类。
  
  参考文献:
  
  [1]王寅峰,许志良.AppInventor实践教程---Android智能应用开发前传[M].北京:电子工业出版社,2013:210-230.  
  [2]David Wolber,Hal Abelson,Ellen Spertus.App Inventor:Create Your Own Android Apps[J].O'Reilly,2011:150-180.  
  [3]王向辉.可视化开发Android应用程序---拼图开发模式App Inventor[M].北京:清 华 大 学 出 版 社,2013:231-253.
  [4]明日科技.Android从入门到精通[M].北京:清华大学出版社,2015:384-412.

本文来源:http://www.rjdtv.com/gongchenglunwen/2775.html