① android 定時器如何讓某天某個時間啟動
Android中使用AlarmManager進行定時操作,現在需要啟動多個定時器,但無論採用哪種方式後面的定時器都會將前面的定時器覆蓋掉(Android系統版本2.1),只啟動最後一個定時器,見代碼 java code// 方式一for (int i = 0; i < 10; i ++) { ... AlarmManager am = null; am = (AlarmManager) context.getApplicationContext().getSystemService(Context.ALARM_SERVICE); ... Intent i = new Intent("xxx"); PendingIntent sender = PendingIntent.getBroadcast(context.getApplicationContext(), 0, i, PendingIntent.FLAG_UPDATE_CURRENT); ... am.setRepeating(...);}// 方式二AlarmManager am = null;am = (AlarmManager) context.getApplicationContext().getSystemService(Context.ALARM_SERVICE);for (int i = 0; i < 10; i ++) { ... Intent i = new Intent("xxx"); PendingIntent sender = PendingIntent.getBroadcast(context.getApplicationContext(), 0, i, PendingIntent.FLAG_UPDATE_CURRENT); ... am.setRepeating(...);} 請問如果要實現啟動多個定時器應該怎麼操作?Android系統的鬧鍾就是採用AlarmManager進行操作的,如何才能啟動多個定時器呢?先謝謝大家了 ------解決方案-------------------- public static PendingIntent getBroadcast(Context context, int requestCode, Intent intent, int flags) requestCode 需要是唯一的
② 新手對於Android定時器的問題
私信給你了
③ android怎麼設置一個定時的任務
我知道的有三種方法;
方法一:可以通過android自帶的Handler機制,裡面有new Handler().postDelayed(new Runnable(){
@Override
public void run() {
//延遲的時間到了執行
}
},延遲的時間);
方法二:可以通過java裡面的線程來寫,new Thread().sleep(延遲時間);時間到了會繼續執行;
方法三:java定時器(有很多方法)例如:
Timer timer = new Timer();
timer.schele(new TimerTask() {
public void run() {
System.out.println("-------設定要指定任務--------");
}
}, long delay,long period);
delay延遲的時間,period為多久執行一次;
個人推薦用方法一,畢竟安卓系統自帶的,並且安卓不適合加定時器,如果處理不當一直執行的話,要麼卡,要麼程序崩潰。還有發布版本可能審核不通過。
④ Android Studio定時器!
你的意思是,假設3個RadioButton,第一個設為10秒,第二個設為20秒,第三個設為30秒,然後一起倒計時到0嗎?如果是這樣的話,只需要在Handler的handleMessage中去減時間就行了。
Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
xx.setText(Integer.parseInt(xx.getText()-1);
}
};
⑤ android設置定時器調用時設置時間
你的意思是,假設3個RadioButton,第一個設為10秒,第二個設為20秒,第三個設為30秒,然後一起倒計時到0嗎?如果是這樣的話,只需要在Handler的handleMessage中去減時間就行了。
Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
xx.setText(Integer.parseInt(xx.getText()-1);
}
};
⑥ 有關Android中定時器的問題
你這里犯了一個基本的錯誤。
你的timer是沒有問題的,問題在Toast.makeText(e201301.this, "ABCD", Toast.LENGTH_LONG).show();中。
另外你說沒有報錯,我不太相信,logcat裡面應該會有log出來的。除非你的logcat有問題。
另外把Toast.makeText(e201301.this, "ABCD", Toast.LENGTH_LONG).show();
換成其他基本的語句應該是不會有問題的。
這里的問題主要出在你用timer開了一個新線程,然後你希望在新線程裡面,直接在UI線程上顯示東西。於是就有錯了。
如果你只是為了測試timer,你可以把Toast.makeText(e201301.this, "ABCD", Toast.LENGTH_LONG).show();
換成Log.e("Timer在運行", "ABCD");
這樣你就會看到logcat裡面,按照你設定的時間,不斷的輸出這句LOG。也就是Timer正常運行了。
如果你依舊希望能在UI線程上顯示什麼,那麼你可以參考下線程間通信的handle、Message。或者簡單利用AsyncTask等
⑦ android 定時器暫停 可以用canel()方法 但我又想再次喚起 用什麼方法
android 定時器是一個線程,線程canel 以後,只能重新new 並調用 start啟動。
具體實現代碼:
創建線程定時器同理
Thread thread = new Thread();
thread.start(); 啟動線程
當線程或定時器停止後,需要重新new
thread = new Thread();
thread.start(); 重新啟動線程或定時器
⑧ android 哪種 定時器比較好
AlarmManager
這個可以喚醒cpu。
其他的在屏幕關掉後不會運行
⑨ 安卓定時器Handler如何關閉
{
publicTimeCounts(longmillisInFuture,longcountDownInterval){
super(millisInFuture,countDownInterval);//參數依次為總時長,和計時的時間間隔
}
@Override
publicvoidonFinish(){//計時完畢時觸發
}
@Override
publicvoidonTick(longmillisUntilFinished){//計時過程顯示
//倒計時數可以寫在這兒
}
}
TimeCounts timeCounts = new TimeCounts(30000, 1000);//總時長30s,間隔1s
timeCounts.start();//倒計時開始
timeCounts.cancel();//取消倒計時
⑩ android定時器alarmmanager和timer的區別
Java的Timer類可以用來計劃需要循環執行的任務。
簡單的說,一個Timer內部封裝裝了「一個Thread」和「一個TimerTask隊列」,這個隊列按照一定的方式將任務排隊處理。封裝的Thread在Timer的構造方法調用時被啟動,這個Thread的run方法按照條件去循環這個TimerTask隊列,然後調用TimerTask的run方法。
但是,如果CPU進入了休眠狀態,那麼這個thread將會因為失去CPU時間片而阻塞,從而造成我們需要的定時任務失效。上述定時任務失效的場景分析:假設定時任務的條件是到了時間xx:yy才能執行,但由於cpu休眠造成線程阻塞的關系,當前系統時間超過了這個時間,即便CPU從終端中恢復了,那麼由於條件不滿足,定時任務在這一次自然就失效了。
它需要用WakeLock讓CPU 保持喚醒狀態。這樣會大量消耗手機電量,大大減短手機待機時間。這種方式不能滿足需求。
AlarmManager是Android 系統封裝的用於管理RTC的模塊,RTC(Real Time Clock) 是一個獨立的硬體時鍾,可以在 CPU 休眠時正常運行,在預設的時間到達時,通過中斷喚醒CPU。這意味著,如果我們用 AlarmManager 來定時執行任務,CPU 可以正常的休眠,只有在需要運行任務時醒來一段很短的時間。