ZNDS智能電視網 推薦當貝市場

TV應用下載 / 資源分享區(qū)

軟件下載 | 游戲 | 討論 | 電視計算器

綜合交流 / 評測 / 活動區(qū)

交流區(qū) | 測硬件 | 網站活動 | Z幣中心

新手入門 / 進階 / 社區(qū)互助

新手 | 你問我答 | 免費刷機救磚 | ROM固件

查看: 13818|回復: 0
上一主題 下一主題
[案例]

Android---AlarmManager(全局定時器/鬧鐘)

[復制鏈接]
跳轉到指定樓層
樓主
發(fā)表于 2013-8-28 16:29 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
4AlarmManager的使用機制有的稱呼為全局定時器,有的稱呼為鬧鐘。通過對它的使用,個人覺得叫全局定時器比較合適,其實它的作用和Timer有點相似。都有兩種相似的用法:(1)在指定時長后執(zhí)行某項操作(2)周期性的執(zhí)行某項操作   
AlarmManager對象配合Intent使用,可以定時的開啟一個Activity,發(fā)送一個BroadCast,或者開啟一個Service.   
下面的代碼詳細的介紹了兩種定時方式的使用:   
(1)在指定時長后執(zhí)行某項操作   
代碼    
   
       //操作:發(fā)送一個廣播,廣播接收后Toast提示定時操作完成     Intent intent =new Intent(Main.this, alarmreceiver.class);   
    intent.setAction("short");   
    PendingIntent sender=   
        PendingIntent.getBroadcast(Main.this, 0, intent, 0);   
      
    //設定一個五秒后的時間   
    Calendar calendar=Calendar.getInstance();   
    calendar.setTimeInMillis(System.currentTimeMillis());   
    calendar.add(Calendar.SECOND, 5);   
      
    AlarmManager alarm=(AlarmManager)getSystemService(ALARM_SERVICE);   
    alarm.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), sender);   
    //或者以下面方式簡化   
    //alarm.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+5*1000, sender);   
      
    Toast.makeText(Main.this, "五秒后alarm開啟", Toast.LENGTH_LONG).show();   
   
   
//注意:receiver記得在manifest.xml注冊   
代碼   
public   
static   
class alarmreceiver extends BroadcastReceiver{   
   
        @Override   
        public   
void onReceive(Context context, Intent intent) {   
            // TODO Auto-generated method stub   
   
if(intent.getAction().equals("short")){   
                Toast.makeText(context, "short alarm", Toast.LENGTH_LONG).show();   
            }else{   
                Toast.makeText(context, "repeating alarm",   
                      Toast.LENGTH_LONG).show();   
            }   
        }   
    }   
   
   
(2)周期性的執(zhí)行某項操作   
    Intent intent =new Intent(Main.this, alarmreceiver.class);   
    intent.setAction("repeating");   
    PendingIntent sender=PendingIntent   
        .getBroadcast(Main.this, 0, intent, 0);   
      
    //開始時間   
    long firstime=SystemClock.elapsedRealtime();   
   
    AlarmManager am=(AlarmManager)getSystemService(ALARM_SERVICE);   
  //5秒一個周期,不停的發(fā)送廣播   
    am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP   
            , firstime, 5*1000, sender);   
   
   
AlarmManager的setRepeating()相當于Timer的Schedule(task,delay,peroid);有點差異的地方時Timer這個方法是指定延遲多長時間   
以后開始周期性的執(zhí)行task;   
AlarmManager的取消:(其中需要注意的是取消的Intent必須與啟動Intent保持絕對一致才能支持取消AlarmManager)   
  Intent intent =new Intent(Main.this, alarmreceiver.class);   
  intent.setAction("repeating");   
  PendingIntent sender=PendingIntent   
         .getBroadcast(Main.this, 0, intent, 0);   
  AlarmManager alarm=(AlarmManager)getSystemService(ALARM_SERVICE);   
  alarm.cancel(sender);   

上一篇:第05講:用戶界面 View(一).docx
下一篇:android防止反編譯的措施
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

Archiver|新帖|標簽|軟件|Sitemap|ZNDS智能電視網 ( 蘇ICP備2023012627號 )

網絡信息服務信用承諾書 | 增值電信業(yè)務經營許可證:蘇B2-20221768 丨 蘇公網安備 32011402011373號

GMT+8, 2024-11-10 05:04 , Processed in 0.051262 second(s), 16 queries , Redis On.

Powered by Discuz!

監(jiān)督舉報:report#znds.com (請將#替換為@)

© 2007-2024 ZNDS.Com

快速回復 返回頂部 返回列表