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

?

基于Android平臺定時(shí)任務(wù)的設(shè)計(jì)與實(shí)現(xiàn)

2016-03-14 02:14陳立佳唐山學(xué)院唐山063020
電子測試 2016年13期
關(guān)鍵詞:唐山鬧鐘廣播

陳立佳(唐山學(xué)院,唐山,063020)

?

基于Android平臺定時(shí)任務(wù)的設(shè)計(jì)與實(shí)現(xiàn)

陳立佳
(唐山學(xué)院,唐山,063020)

摘要:隨著Android系統(tǒng)手機(jī)的普及,越來越多的軟件開發(fā)者投入到Android平臺編程的隊(duì)伍中。在項(xiàng)目開發(fā)時(shí),經(jīng)常會被要求實(shí)現(xiàn)定時(shí)任務(wù)功能,而Android平臺下實(shí)現(xiàn)定時(shí)任務(wù)的方法有很多,各有優(yōu)缺點(diǎn)。本文重點(diǎn)介紹基于系統(tǒng)時(shí)鐘(AlarmManager)來實(shí)現(xiàn)定時(shí)任務(wù)并以狀態(tài)欄通知(NotificationManager)的方式通知用戶的功能設(shè)計(jì)與實(shí)現(xiàn)。

關(guān)鍵詞:Android;定時(shí)任務(wù);AlarmManager,NotificationManager

0 引言

在Android軟件開發(fā)中,我們經(jīng)常會遇到定時(shí)任務(wù)、周期任務(wù)、定時(shí)提醒、周期提醒等功能需求,這些需求的實(shí)現(xiàn)有很多種方法,各有優(yōu)缺點(diǎn)。

常用的實(shí)現(xiàn)定時(shí)任務(wù)的方式有:

采用Handler與線程的sleep(long)方法

采用Handler的postDelayed(Runnable, long)方法

采用Handler與timer及TimerTask結(jié)合的方法

上述三種方法各有優(yōu)缺點(diǎn),共同的缺點(diǎn)就是需要占用系統(tǒng)資源同時(shí)比較耗電,還有一個(gè)缺點(diǎn)是時(shí)間準(zhǔn)確性的不好掌握。

本文從程序的性能以及時(shí)間的準(zhǔn)確性為出發(fā)點(diǎn),設(shè)計(jì)通過使用Android系統(tǒng)本身提供的AlarmManager來實(shí)現(xiàn)定時(shí)功能,而任務(wù)的實(shí)現(xiàn),可以通過Receiver來完成,同時(shí)實(shí)現(xiàn)了任務(wù)狀態(tài)提醒功能(通過調(diào)用系統(tǒng)鬧鈴以及狀態(tài)欄通知的功能)。

1 AlarmManager

AlarmManager是Android系統(tǒng)提供的在特定的時(shí)刻為我們廣播一個(gè)指定的Intent。該功能是基于系統(tǒng)時(shí)鐘的,簡單的說就是我們設(shè)定一個(gè)時(shí)間,然后在該時(shí)間到來時(shí),larmManager為我們廣播一個(gè)我們設(shè)定的Intent。然后用戶設(shè)置一個(gè)Receiver用來接收處理相應(yīng)的定時(shí)任務(wù)。

AlarmManager提供了四種喚醒方式來設(shè)置定時(shí)任務(wù):

ELAPSED_REALTIME,在指定的延時(shí)過后,發(fā)送廣播,但不喚醒設(shè)備。

ELAPSED_REALTIME_WAKEUP ,在指定的延遲后,發(fā)送廣播,并喚醒設(shè)備。

RTC,在指定的時(shí)刻,發(fā)送廣播,但不喚醒設(shè)備 。

RTC_WAKEUP,在指定的時(shí)刻,發(fā)送廣播,并喚醒設(shè)備。

用戶可以根據(jù)自己項(xiàng)目的需求靈活的定制鬧鐘類型,但用的最多的是RTC_WAKEUP。

設(shè)置定時(shí)的方式也有多種,具體如下:

void set(int type, long triggerAtTime,PendingIntent operation) ,設(shè)置一個(gè)鬧鐘, triggerAtTi

me表示鬧鐘據(jù)現(xiàn)在多少毫秒之后發(fā)生

void setRepeating(int type, long triggerAtTime,long interval, PendingIntent operation) ,設(shè)置一個(gè)會重復(fù)的鬧鐘,triggerAtTime表示多少毫秒之后發(fā)生,interval表示間隔這么長時(shí)間后繼續(xù)產(chǎn)生鬧鐘事件

取消定時(shí)的方式只有一種:

void cancel(PendingIntent operation)。

2 AlarmReceiver

AlarmReceiver為自定義并繼承了BroadcastReceiver的類。在 該 類中,必 須要重載 的 函 數(shù)為public void onReceive(Context context, Intent intent)。在onReceive函數(shù)中實(shí)現(xiàn)接收到定時(shí)的廣播后,如何將定時(shí)任務(wù)中的任務(wù)繼續(xù)的完成下去。

繼續(xù)上述實(shí)例,在onReceive函數(shù)中主要的代碼如下:

manager = (NotificationManager) context. getSystemService(NOTIFICATION_SERVICE);

Intent playIntent = new Intent(context,MainActivity.class);

PendingIntent pIntent = PendingIntent. getActivity(context, requestCode, playIntent,PendingIntent.FLAG_UPDATE_CURRENT);

NotificationCompat.Builder builder = new NotificationCompat.Builder(context);

builder.setContentTitle("xx"). setContentText(remind)

.setContentIntent(pendingIntent)

.setDefaults(Notification.DEFAULT_ALL). setAutoCancel(true);

manager.notify(requestCode, builder.build());

3 多定時(shí)任務(wù)的實(shí)現(xiàn)

如果要實(shí)現(xiàn)多定時(shí)任務(wù),則需要在上述代碼中考慮requestCode。在AlarmManager類中,識別不同定時(shí)任務(wù)的關(guān)鍵在于requestCode,如果每次執(zhí)行的定時(shí)任務(wù)都是同一個(gè)requestCo

de,那么會用最后設(shè)置的定時(shí)任務(wù)覆蓋之前的定時(shí)任務(wù)。

在狀態(tài)欄提示時(shí),也要考慮requestCode的問題,關(guān)鍵在于manager.notify(requestCode, builder.build())這句代碼。如果多次調(diào)用該語句,而每次調(diào)用時(shí)requestCode值相同,則之會在用戶的狀態(tài)提示欄里出現(xiàn)一個(gè)通知,也就是最后一次調(diào)用產(chǎn)生的通知。

綜上所述,該requestCode值無論是注冊定時(shí)任務(wù),還是顯示定時(shí)任務(wù)的執(zhí)行狀態(tài)或結(jié)果,都是至關(guān)重要的。requestCode值必須是整型值,怎么能保證這個(gè)值在項(xiàng)目執(zhí)行時(shí)的唯一性,方法有很多,有一個(gè)比較簡單的方式,可以用當(dāng)前系統(tǒng)時(shí)間來表示這個(gè)唯一值。

4 總結(jié)

本文通過AlarmManager實(shí)現(xiàn)Android系統(tǒng)下多定時(shí)任務(wù)的功能,是從實(shí)際使用和省電的角度考慮,這樣做確實(shí)比較合理。沒有自定義線程或后臺服務(wù),減少了用戶手機(jī)的資源使用。但是由于Android手機(jī)廠商的Rom很多都是深度定制,而他們在定制時(shí)加入了很多“優(yōu)化”措施,所以,可能導(dǎo)致了實(shí)際開發(fā)中會遇到形形色色的bug,出現(xiàn)這種情況,只能是由開發(fā)者根據(jù)實(shí)際出現(xiàn)的問題去查找解決方案了。本文只是適合于大多數(shù)情況。

參考文獻(xiàn)

[1]吳亞峰,索依娜.Android核心技術(shù)與實(shí)例講解.電子工業(yè)出版社.2010

[2]韓超.Android經(jīng)典應(yīng)用程序開發(fā)[J].人力資源出版社.2011

Based on the design and implementation of the Android platform timing task

Chen Lijia
(TangShan,University,Tang Shan,063020)

Abstract:With the popularity of Android mobile phones,more and more software developers into the Android platform programming team.In project development,will often be asked to achieve timing task function,and the method to realize the timing of the Android platform has a lot of,each have advantages and disadvantages.This article focuses on to achieve timing task based on the system clock(AlarmManager)and a notification in the status bar(NotificationManager)way to inform the user function design and implementation.

Keywords:Android;timing task;AlarmManager;NotificationManager

猜你喜歡
唐山鬧鐘廣播
多彩創(chuàng)意鬧鐘
中國農(nóng)業(yè)發(fā)展銀行唐山分行
中國農(nóng)業(yè)發(fā)展銀行唐山分行
唐山香酥饹馇圈
天然鬧鐘
小鬧鐘的提醒
能幫我設(shè)個(gè)鬧鐘不等四則
廣播發(fā)射設(shè)備中平衡輸入與不平衡輸入的轉(zhuǎn)換
王大根
網(wǎng)絡(luò)在現(xiàn)代廣播中的應(yīng)用