国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Android中的Service實(shí)現(xiàn)視力保護(hù)程序

2016-05-16 03:03:39
關(guān)鍵詞:后臺(tái)調(diào)用應(yīng)用程序

瞿 蘇

(江蘇聯(lián)合職業(yè)技術(shù)學(xué)院 揚(yáng)州商務(wù)分院,江蘇 揚(yáng)州 225000)

基于Android中的Service實(shí)現(xiàn)視力保護(hù)程序

瞿 蘇

(江蘇聯(lián)合職業(yè)技術(shù)學(xué)院 揚(yáng)州商務(wù)分院,江蘇 揚(yáng)州 225000)

用戶可以在免費(fèi)手機(jī)平臺(tái)Android上,開發(fā)各種對(duì)自身使用的APK應(yīng)用文件, 在開發(fā)應(yīng)用程序過(guò)程中, 程序員可以使用Service開發(fā)需在后臺(tái)執(zhí)行長(zhǎng)時(shí)間運(yùn)行操作,并且不提供用戶界面的應(yīng)用程序組件。重點(diǎn)講述視力保護(hù)程序使用Service的過(guò)程,該過(guò)程首先定義TimeService類和TimeActivity類,關(guān)鍵是在AndroidManifest.xml文件中增加Activity和Service配置,以此調(diào)用TimeService的過(guò)程而啟動(dòng)服務(wù)和停止服務(wù)。

Service;視力保護(hù)程序; Started Service

1 基本概念

1.1 Service應(yīng)用簡(jiǎn)介

Service(服務(wù))是能夠在后臺(tái)執(zhí)行長(zhǎng)時(shí)間運(yùn)行操作,并且不提供用戶界面的應(yīng)用程序組件,它是用于在后臺(tái)完成用戶指定的操作,可以用于音樂(lè)播放器、文件下載工具等應(yīng)用程序[1]。用戶可以使用其他控件來(lái)與進(jìn)行通信。當(dāng)用戶切換到其他應(yīng)用程序時(shí),服務(wù)依然可以在后臺(tái)運(yùn)行,其他應(yīng)用程序組件可以綁定服務(wù),進(jìn)程間可以相互通信。例如,服務(wù)能在后臺(tái)處理網(wǎng)絡(luò)事務(wù)、播放音樂(lè)、執(zhí)行文件I/O或者與ContentProvider通信。

1.2 視力保護(hù)程序

視力保護(hù)程序是一個(gè)保護(hù)眼睛的手機(jī)軟件,如果用戶當(dāng)前環(huán)境光照強(qiáng)度,智能調(diào)節(jié)屏幕亮度、實(shí)時(shí)的保護(hù)用戶的眼睛,讓用戶保持最健康的用眼習(xí)慣,使眼睛視力總是處于最好狀態(tài)。

2 視力保護(hù)程序的實(shí)現(xiàn)方案

2.1 視力保護(hù)程序的實(shí)現(xiàn)目的

視力保護(hù)程序是一個(gè)保護(hù)眼睛的手機(jī)軟件,軟件會(huì)告訴用戶用怎樣的方法,可以緩解眼睛疲勞或者其他的眼部問(wèn)題,用戶也能設(shè)置提醒,告訴自己什么時(shí)候該好好活動(dòng)休息一下了,達(dá)到實(shí)時(shí)感應(yīng)的效果。

2.2 項(xiàng)目實(shí)現(xiàn)

2.2.1 項(xiàng)目開發(fā)環(huán)境

開發(fā)APK應(yīng)用程序,對(duì)硬件要求較高,Android SDK全部下載大概需要占用4GB硬盤空間,由于開發(fā)過(guò)程中需要反復(fù)重啟模擬器,而每次重啟都會(huì)消耗幾分鐘時(shí)間(視機(jī)器配置而定)。

2.2.2 技術(shù)使用

(1)Service分類

Service(服務(wù))是從本質(zhì)上分為兩種類型Started(啟動(dòng))和Bound(綁定)。當(dāng)應(yīng)用程序組件通過(guò)調(diào)用Started Service時(shí),Service為Started狀態(tài);當(dāng)調(diào)用bindService()時(shí),Service為bound狀態(tài)。

(2)創(chuàng)建Started Service

當(dāng)用戶打開音樂(lè)播放器、文件下載工具等應(yīng)用程序時(shí), Service可以在后臺(tái)完成用戶的操作。用戶可以使用其他控件來(lái)與Service進(jìn)行通信。

當(dāng)Service為“started”時(shí),Service可以在后臺(tái)一直運(yùn)行,因?yàn)槠渖芷谂c啟動(dòng)它的組件無(wú)關(guān),所以即使啟動(dòng)它的服務(wù)組件被銷毀。當(dāng)服務(wù)完成任務(wù)后,可以通過(guò)stopSelf()或者由其他組件調(diào)用stop Service()停止服務(wù)。Activity組件可以通過(guò)startService()和傳遞Intent對(duì)象來(lái)啟動(dòng)服務(wù),服務(wù)可以通過(guò)onStartCommand()方法接收Intent。Intent對(duì)象中包含了服務(wù)和服務(wù)中所包含的全部數(shù)據(jù)[2]。

(3)繼承IntentService類

大多數(shù)啟動(dòng)服務(wù)沒(méi)有必要處理多個(gè)請(qǐng)求,因此提出了類。程序員可以使用IntentService類使用了onStartCommand()方法、onHandleIntent()方法、onBind()方法和onStartCommand()方法。

(4)繼承Service類

使用IntentService類簡(jiǎn)化啟動(dòng)服務(wù)的實(shí)現(xiàn),然而,如果需要讓服務(wù)處理多個(gè)線程(取代使用工作隊(duì)列處理啟動(dòng)請(qǐng)求),則可以繼承Service類來(lái)處理各個(gè)Intent[3]。對(duì)于每次啟動(dòng)請(qǐng)求,它使用工作線程來(lái)執(zhí)行任務(wù),并且每次處理一個(gè)請(qǐng)求。

(5)啟動(dòng)服務(wù)

程序員可以通過(guò)Activity啟動(dòng)服務(wù),也可以通過(guò)其他應(yīng)用程序組件,傳遞Intent對(duì)象到startService()方法啟動(dòng)服務(wù)。Android系統(tǒng)調(diào)用服務(wù)的onStartCommand()方法并將傳遞給它。startService()方法立即返回,然后系統(tǒng)調(diào)用服務(wù)的onStartCommand()方法。如果服務(wù)還沒(méi)有運(yùn)行,系統(tǒng)首先調(diào)用onCreat()方法,接著調(diào)用onStartCommand()方法。

當(dāng)服務(wù)沒(méi)有提供綁定時(shí),Intent 應(yīng)用程序組件和服務(wù)之間,唯一的通信模式是StartService()。然而,如果開發(fā)人員需要服務(wù)返回結(jié)果,則啟動(dòng)該服務(wù)的客戶端,能為廣播創(chuàng)建pendingIntent(使用getBroadcast()方法),并通過(guò)啟動(dòng)服務(wù)的Intent進(jìn)行發(fā)送。服務(wù)接下來(lái)便能使用廣播來(lái)發(fā)送結(jié)果。啟動(dòng)服務(wù)如果被多次請(qǐng)求,則Service的onStartCommand()方法會(huì)被多次調(diào)用。

(6)停止服務(wù)

啟動(dòng)服務(wù)必須管理自己的生命周期,即系統(tǒng)不會(huì)停止或銷毀服務(wù),除非系統(tǒng)必須回收系統(tǒng)內(nèi)存,而且在 onStartCommand()方法返回后,服務(wù)繼續(xù)運(yùn)行。

Service如何停止服務(wù)呢?它可以調(diào)用stopSelf()方法停止自身和調(diào)用stopService(),當(dāng)調(diào)用以上兩種方法請(qǐng)求時(shí),系統(tǒng)會(huì)盡快銷毀服務(wù)。如果同時(shí)遇到多個(gè)onStartCommand()請(qǐng)求時(shí),系統(tǒng)不會(huì)立刻停止服務(wù),因?yàn)榭赡軙?huì)收到新的啟動(dòng)請(qǐng)求。

為了解決這個(gè)問(wèn)題,開發(fā)人員可以使用stopSelf(int)方法,來(lái)確保停止服務(wù)的請(qǐng)求總是基于最近收到的啟動(dòng)請(qǐng)求,并將啟動(dòng)請(qǐng)求的ID傳遞給停止請(qǐng)求。這樣,如果服務(wù)在調(diào)用stopSelf(int)方法前接收到新啟動(dòng)請(qǐng)求,會(huì)因ID匹配而不停止服務(wù)。應(yīng)用程序應(yīng)該在任務(wù)完成后停止服務(wù),來(lái)避免系統(tǒng)資源浪費(fèi)和電池消耗。即使某些情況下綁定服務(wù),只要調(diào)用onStartCommand()方法就必須停止服務(wù)。

(7)管理Service的生命周期

用戶經(jīng)常在不知情的情況下,服務(wù)在后臺(tái)運(yùn)行。開發(fā)人員需明白服務(wù)如何銷毀,因此提出了服務(wù)的生命周期。服務(wù)的生命周期可以分成兩個(gè)不同的路徑:Started Service:當(dāng)其他組件調(diào)用startService()方法時(shí),服務(wù)被創(chuàng)建。當(dāng)服務(wù)停止時(shí),系統(tǒng)將其銷毀;Bound Service:當(dāng)其他組件調(diào)用bindService()方法時(shí),服務(wù)被創(chuàng)建。接著客戶端通過(guò)IBinder接口與服務(wù)通信??蛻舳送ㄟ^(guò)unbindService()方法關(guān)閉連接。

這兩條路徑并非完全獨(dú)立,即開發(fā)人員可以綁定已經(jīng)使用startService()方法啟動(dòng)的服務(wù)。stopService()和stopSelf()方法直到全部客戶端解綁定時(shí)才能停止服務(wù)。

3 視力保護(hù)程序的設(shè)計(jì)過(guò)程

3.1 在Eclipse中創(chuàng)建Android項(xiàng)目,當(dāng)應(yīng)用程序運(yùn)行1分鐘后,顯示提示信息,提醒用戶保護(hù)視力。

修改reslayout目錄中的main.xml文件,定義應(yīng)用程序的背景圖片和一個(gè)文本框。

3.2 在com.mingrisoft包中,定義TimeService類,它繼承Service類。在onStart()方法中,使用Timer類完成延時(shí)操作,在一個(gè)新線程中創(chuàng)建消息,并且在60秒后運(yùn)行。

3.3 在com.mingrisoft包中,定義TimeActivity類,它繼承Activity類,在onCreate()方法中,啟動(dòng)服務(wù)。

3.4 修改AndroidManifest.xml文件,增加Activity和Service配置。

3.5 程序編寫完成,啟動(dòng)應(yīng)用程序,提示1分鐘后顯示。

4 小結(jié)

本文重點(diǎn)講述了開發(fā)視力保護(hù)程序使用Service的過(guò)程,整個(gè)過(guò)程,首先定義了繼承Service類的TimeService類,和繼承Activity類的TimeActivity類,兩類的目的分別是用onStart()方法,實(shí)現(xiàn)60秒后運(yùn)行通知信息和onCreate()方法實(shí)現(xiàn)啟動(dòng)服務(wù),再者在AndroidManifest.xml文件中增加Activity和Service配置,以此調(diào)用TimeService的過(guò)程而啟動(dòng)服務(wù)和停止服務(wù),同時(shí)程序員可根據(jù)需求將60秒時(shí)間更改,該視力保護(hù)程序簡(jiǎn)單而易操作。本文主要是通過(guò)視力保護(hù)程序開發(fā)的過(guò)程介紹了四大組件之一的Service(服務(wù)),服務(wù)可以分成Started服務(wù)和Bound服務(wù)兩大類。對(duì)于Started服務(wù),有兩種實(shí)現(xiàn)方式:繼承IntentService類和繼承Service類;對(duì)于Bound服務(wù),有兩種實(shí)現(xiàn)方式:繼承Binder類和使用Messenger類。

[1]王寅峰,許志良.AppInventor實(shí)踐教程——Android智能應(yīng)用開發(fā)前傳[M].北京:電子工業(yè)出版社,2013:210-230.

[2]David Wolber,Hal Abelson,Ellen Spertus.App Inventor:Create Your Own Android Apps[J].O’Reilly,2011:150-180.

[3]王向輝.可視化開發(fā)Android應(yīng)用程序——拼圖開發(fā)模式App Inventor[M].北京:清華大學(xué)出版社,2013:231-253.

[4]明日科技.Android從入門到精通[M].北京:清華大學(xué)出版社,2015:384-412.

Eyesight Protection Program Based on the Android Service Implementation

QU Su

(Yangzhou Business Branch of Jiangsu United Vocational and Technical College,Yangzhou,Jiangsu 225127)

Users can develop various APK applications for their own use for free on Android mobile phone platform. In the process of developing the application, the programmer can use the service development in the background of executive time and does not provide a user interface for operating the application components. This article focuses on the process of visual acuity protection programs using the service process. The process first defines Time Service class and Time Activity class. The key of the process is increasing the Activity and the Service configuration in the AndroidManifest.xml file, then call Time Service, start service and stop service.

service; eyesight protection program; started service

2016-10-09

瞿 蘇(1982-),女,江蘇揚(yáng)州人,講師,碩士。研究方向:計(jì)算機(jī)應(yīng)用技術(shù)。

R77

A

1008-8156(2016)04-0064-04

修回日期:2016-11-22

猜你喜歡
后臺(tái)調(diào)用應(yīng)用程序
核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
刪除Win10中自帶的應(yīng)用程序
LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
后臺(tái)暗戀
基于系統(tǒng)調(diào)用的惡意軟件檢測(cè)技術(shù)研究
前臺(tái)、后臺(tái)精彩花絮停不了
電力調(diào)度中后臺(tái)監(jiān)控系統(tǒng)的應(yīng)用
河南科技(2014年11期)2014-02-27 14:10:03
利用RFC技術(shù)實(shí)現(xiàn)SAP系統(tǒng)接口通信
后臺(tái)
關(guān)閉應(yīng)用程序更新提醒
電腦迷(2012年15期)2012-04-29 17:09:47
平顶山市| 瑞安市| 乐昌市| 江川县| 广饶县| 蛟河市| 德保县| 三河市| 微山县| 元谋县| 寿阳县| 峡江县| 广安市| 正安县| 高雄市| 普安县| 青海省| 五大连池市| 东源县| 雷州市| 新田县| 寿光市| 新河县| 吴旗县| 平塘县| 闸北区| 平昌县| 梨树县| 虞城县| 岚皋县| 仪征市| 拉萨市| 九江市| 大冶市| 台江县| 阿勒泰市| 龙岩市| 志丹县| 龙陵县| 金川县| 南溪县|