欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

android的定時器,安卓間隔定時器

android設(shè)置定時器調(diào)用時設(shè)置時間

你的意思是,假設(shè)3個RadioButton,第一個設(shè)為10秒,第二個設(shè)為20秒,第三個設(shè)為30秒,然后一起倒計時到0嗎?如果是這樣的話,只需要在Handler的handleMessage中去減時間就行了。

創(chuàng)新互聯(lián)是專業(yè)的萊山網(wǎng)站建設(shè)公司,萊山接單;提供成都做網(wǎng)站、網(wǎng)站建設(shè),網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進行萊山網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!

Handler handler=new Handler(){

@Override

public void handleMessage(Message msg) {

super.handleMessage(msg);

xx.setText(Integer.parseInt(xx.getText()-1);

}

};

android定時器alarmmanager和timer的區(qū)別

在Android上常用的定時器有兩種,一種是Java.util.Timer,一種就是系統(tǒng)的AlarmService了。

實驗1:使用Java.util.Timer。

在onStart()創(chuàng)創(chuàng)建Timer,每5秒更新一次計數(shù)器,并啟動。

Java代碼

1mTimer = new Timer();

2mTimer.schedule(new TimerTask() {

3 @Override

4 public void run() {

5 ++mCount;

6 mHandler.sendEmptyMessage(0);

7 }

8 }, 5*1000, 5*1000);

當連接USB線進行調(diào)試時,會發(fā)現(xiàn)一切工作正常,每5秒更新一次界面,即使是按下電源鍵,仍然會5秒觸發(fā)一次。

當拔掉USB線,按下電源鍵關(guān)閉屏幕后,過一段時間再打開,發(fā)現(xiàn)定時器明顯沒有繼續(xù)計數(shù),停留在了關(guān)閉電源鍵時的數(shù)字。

實驗2:使用AlarmService:

2.1通過AlarmService每個5秒發(fā)送一個廣播,setRepeating時的類型為AlarmManager.ELAPSED_REALTIME。

Java代碼

1AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);

2am.setRepeating(AlarmManager.ELAPSED_REALTIME, firstTime, 5*1000, sender);

拔掉USB線,按下電源鍵,過一段時間再次打開屏幕,發(fā)現(xiàn)定時器沒有繼續(xù)計數(shù)。

2.2setRepeating是的類型設(shè)置為AlarmManager.ELAPSED_REALTIME_WAKEUP

Java代碼

1AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);

2am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstTime, 5*1000, sender);

拔掉USB線,按下電源鍵,過一點時間再次打開屏幕,發(fā)現(xiàn)定時器一直在計數(shù)。

如此看來,使用WAKEUP才能保證自己想要的定時器一直工作,但是肯定會引起耗電量的增加。

Android開發(fā)——定時器處理

??開發(fā)中經(jīng)常遇到用計時器的時候,例如:每秒輸出一次log,這時候就要用到延時操作,這里總結(jié)了幾種常用的方法。

?? AlarmManager 是Android的全局定時器,可以在指定時間執(zhí)行定時任務(wù)。定時任務(wù)通過PendingIntent 的 getActivity()、getService()或 getBroadcast() 來執(zhí)行。簡單的說就是我們設(shè)定一個時間,然后在該時間到來時,AlarmManager為我們廣播一個我們設(shè)定的Intent出來,在接收到設(shè)定的Intent時執(zhí)行定時任務(wù)。

(2) setRepeating(int type,long startTime,long intervalTime,PendingIntent pi);

該方法用于設(shè)置重復鬧鐘,其中參數(shù)說明如下:

type:鬧鐘類型

startTime:首次執(zhí)行鬧鐘的時間

intervalTime:兩次執(zhí)行鬧鐘的時間間隔

pi:鬧鐘響應動作

(3) setInexactRepeating(int type,long startTime,long intervalTime,PendingIntent pi);

該方法也用于設(shè)置重復鬧鐘,與第二個方法相似,區(qū)別在于其兩次鬧鐘執(zhí)行的間隔時間不是固定的。

?? AlarmManager實現(xiàn)定時的方法,我還沒有用到過,以上內(nèi)容是在網(wǎng)上查找資料后自己在一個小demo中小小試驗了的,有錯誤或描述不清的地方請見諒。下面是我參考的介紹AlarmManager的三篇文章。

android 定時器 如何實現(xiàn)

可以用Service+Broadcast+Handler來實現(xiàn)。

Handler在Service里

在Service里主要邏輯為:用Handler實現(xiàn)每分鐘發(fā)送一次廣播

Broadcast在Activity里,內(nèi)部類的形式

Broadcast接收廣播并調(diào)用某某方法。

核心:Activity開啟服務(wù),讓服務(wù)每隔一分鐘就發(fā)送一條廣播通知調(diào)用某某方法。

這是Activity里的代碼

public?class?MainActivity?extends?Activity??{

public?Intent?startService;

//發(fā)送廣播需要的Action

public?static?final?String?BROADCAST_ACTION="broadcast.action";

/**?Called?when?the?activity?is?first?created.?*/

@Override

public?void?onCreate(Bundle?savedInstanceState)?{

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

//在這里注冊廣播

IntentFilter?filter?=?new?IntentFilter();

filter.addAction(ConstantTool.BROADCAST_ACTION);

registerReceiver(myResver,?filter);

//設(shè)置服務(wù)

startService?=?new?Intent(MusicService.SERVICE_ACTION);

startService.setClass(this,?MusicService.class);

}

//假設(shè)這是你每分鐘都要調(diào)用一次的方法

private?void?initViews()?{

}

//這個點擊事件來控制什么時候開啟服務(wù)

private?OnClickListener?clickListener=new?OnClickListener()?{

@Override

public?void?onClick(View?v)?{

//?TODO?Auto-generated?method?stub

startService(startService);

}

};

/**

?*?廣播

?*?

?*?@author?Administrator

?*?

?*/

class?MyResver?extends?BroadcastReceiver?{

@Override

public?void?onReceive(Context?context,?Intent?intent)?{

//首先判斷你的Action是否一致

if?(BROADCAST_ACTION.equals(intent.getAction()))?{

//如果一致,那么就調(diào)用方法

initVies();

}

}

}

@Override

protected?void?onDestroy()?{

//?TODO?Auto-generated?method?stub

super.onDestroy();

//銷毀廣播

unregisterReceiver(myResver);

}

}

Service里的代碼

public?class?MusicService?extends?Service?{

//這里面的值可以隨意,因為在AndroidManifest里已經(jīng)注冊了

public?static?final?String?SERVICE_ACTION="service.action";

public?MusicService()?{

//?TODO?Auto-generated?constructor?stub

}

@Override

public?IBinder?onBind(Intent?arg0)?{

//?TODO?Auto-generated?method?stub

return?null;

}

@Override

public?void?onCreate()?{

//?TODO?Auto-generated?method?stub

super.onCreate();

}

//創(chuàng)建一個Handler

Handler?mHandler?=?new?Handler()?{

public?void?handleMessage(android.os.Message?msg)?{

int?currentTime?=?msg.arg1;

Intent?broadcast?=?new?Intent(MainActivity.BROADCAST_ACTION);

sendBroadcast(broadcast);

};

};

//創(chuàng)建一個線程

Runnable?updateThread?=?new?Runnable()?{

@Override

public?void?run()?{

if?(mMediaPlayer?!=?null)?{

Message?msg?=?mHandler.obtainMessage();

mHandler.postDelayed(updateThread,?60*1000);

}

}

};

@Override

public?void?onStart(Intent?intent,?int?startId)?{

//?TODO?Auto-generated?method?stub

super.onStart(intent,?startId);

//在這里判斷是否是啟動服務(wù)的那個Action

if?(intent.getAction().equals(SERVICE_ACTION))?{

mHandler.postDelayed(updateThread,?60*1000);

}

}

}

服務(wù)綁定

service?android:name="com.seekbar.android.service.MusicService"/

分享名稱:android的定時器,安卓間隔定時器
當前地址:http://chinadenli.net/article1/dsehjid.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計動態(tài)網(wǎng)站服務(wù)器托管定制開發(fā)靜態(tài)網(wǎng)站全網(wǎng)營銷推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司