欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
android 每天定時(shí)提醒功能實(shí)現

android要實(shí)現定時(shí)的功能那肯定就要用到鬧鈴相關(guān)的技術(shù),

那么android鬧鈴實(shí)現是基于 AlarmManager 這個(gè)類(lèi)的,首先我們來(lái)看一下它的幾個(gè)主要的方法。

打開(kāi)AlarmManager的源碼,如下圖顯示:

兩個(gè)核心的方法 :

 

Java代碼  
  1. private final IAlarmManager mService;  
Java代碼  
  1. public void set(int type, long triggerAtMillis, PendingIntent operation) {   
  2.      try {                                                                    
  3.          mService.set(type, triggerAtMillis, operation);                      
  4.      } catch (RemoteException ex) {                                           
  5.      }                                                                        
  6.  }                 

 

 

Java代碼  
  1. public void setRepeating(int type, long triggerAtMillis,                          
  2.         long intervalMillis, PendingIntent operation) {                           
  3.     try {                                                                         
  4.         mService.setRepeating(type, triggerAtMillis, intervalMillis, operation);  
  5.     } catch (RemoteException ex) {                                                
  6.     }                                                                             
  7. }                                                                                 


第一個(gè)方法主要功能是注冊一個(gè)比較簡(jiǎn)單的鬧鈴,第二個(gè)方法是注冊一個(gè)重復的鬧鈴,這里重復的意思是指:設置5s, 那么每隔5s會(huì )執行一次 。

 

我們看到這里具體的實(shí)現都是基于IAlarmManager的,而IAlarmManager是一個(gè)aidl(Android Interface definition language),具體的就不詳細介紹了,大家有興趣的可以自己研究一下。

 

下面我來(lái)看下set(int type, long triggerAtMillis, PendingIntent operation)方法是如何調用的:

 

Java代碼  
  1. // 進(jìn)行鬧鈴注冊  
  2. Intent intent = new Intent(MainActivity.this, AlarmReceiver.class);  
  3. PendingIntent sender = PendingIntent.getBroadcast(MainActivity.this, 0, intent, 0);  
  4.   
  5. // 過(guò)10s 執行這個(gè)鬧鈴  
  6. Calendar calendar = Calendar.getInstance();  
  7. calendar.setTimeInMillis(System.currentTimeMillis());  
  8. calendar.add(Calendar.SECOND, 10);  
  9.   
  10. AlarmManager manager = (AlarmManager)getSystemService(ALARM_SERVICE);  
  11. manager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), sender);  



 

 

看一下AlarmReceiver 的源碼:

 

Java代碼  
  1. /** 
  2.  *  
  3.  * @ClassName: AlarmReceiver   
  4.  * @Description: 鬧鈴時(shí)間到了會(huì )進(jìn)入這個(gè)廣播,這個(gè)時(shí)候可以做一些該做的業(yè)務(wù)。 
  5.  * @author HuHood 
  6.  * @date 2013-11-25 下午4:44:30   
  7.  * 
  8.  */  
  9. public class AlarmReceiver extends BroadcastReceiver {  
  10.       
  11.     @Override  
  12.     public void onReceive(Context context, Intent intent) {  
  13.     Toast.makeText(context, "鬧鈴響了, 可以做點(diǎn)事情了~~", Toast.LENGTH_LONG).show();  
  14.     }  
  15.   
  16. }  

 

 

還有別忘了,AndroidManifest.xml中需要加入:

 

Html代碼  
  1. <receiver android:name="com.example.alarmmanagerdemo.AlarmReceiver" android:process=":remote">  


運行之后,過(guò)10s 彈出 "鬧鈴響了,可以做點(diǎn)事情了~~", 說(shuō)明成功了。

 

ok,這個(gè)結果肯定不是我們想要的,我們想要的功能是每天定時(shí)提醒的功能,那么需要基于

setRepeating(int type, long triggerAtMillis,long intervalMillis, PendingIntent operation)

 

這個(gè)方法來(lái)實(shí)現,代碼如下:

 

Java代碼  
  1. Intent intent = new Intent(MainActivity.this, AlarmReceiver.class);  
  2. PendingIntent sender = PendingIntent.getBroadcast(MainActivity.this, 0, intent, 0);  
  3.   
  4. long firstTime = SystemClock.elapsedRealtime(); // 開(kāi)機之后到現在的運行時(shí)間(包括睡眠時(shí)間)  
  5. long systemTime = System.currentTimeMillis();  
  6.   
  7. Calendar calendar = Calendar.getInstance();  
  8. calendar.setTimeInMillis(System.currentTimeMillis());  
  9. // 這里時(shí)區需要設置一下,不然會(huì )有8個(gè)小時(shí)的時(shí)間差  
  10. calendar.setTimeZone(TimeZone.getTimeZone("GMT+8"));  
  11. calendar.set(Calendar.MINUTE, mMinute);  
  12. calendar.set(Calendar.HOUR_OF_DAY, mHour);  
  13. calendar.set(Calendar.SECOND, 0);  
  14. calendar.set(Calendar.MILLISECOND, 0);  
  15. // 選擇的定時(shí)時(shí)間  
  16. long selectTime = calendar.getTimeInMillis();  
  17. // 如果當前時(shí)間大于設置的時(shí)間,那么就從第二天的設定時(shí)間開(kāi)始  
  18. if(systemTime > selectTime) {  
  19. Toast.makeText(MainActivity.this,"設置的時(shí)間小于當前時(shí)間", Toast.LENGTH_SHORT).show();  
  20. calendar.add(Calendar.DAY_OF_MONTH, 1);  
  21. selectTime = calendar.getTimeInMillis();  
  22. }  
  23. // 計算現在時(shí)間到設定時(shí)間的時(shí)間差  
  24. long time = selectTime - systemTime;  
  25. firstTime += time;  
  26. // 進(jìn)行鬧鈴注冊  
  27. AlarmManager manager = (AlarmManager)getSystemService(ALARM_SERVICE);  
  28. manager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,  
  29.                 firstTime, DAY, sender);  
  30. Log.i(TAG,"time ==== " + time +", selectTime ===== "  
  31. + selectTime + ", systemTime ==== " + systemTime +", firstTime === " + firstTime);  
  32. Toast.makeText(MainActivity.this,"設置重復鬧鈴成功! ", Toast.LENGTH_LONG).show();  


以上的思路大致是這樣的,首先根據設置的時(shí)間,算出當前時(shí)間離設置時(shí)間的時(shí)間差,加上這個(gè)時(shí)間差,我們就知道第一次提醒的時(shí)間,然后再設定重復的時(shí)間間隔,我們這里設置1天就可以了。



現在解釋一下setRepeating中第一個(gè)參數:


AlarmManager.RTC,硬件鬧鐘,不喚醒手機(也可能是其它設備)休眠;當手機休眠時(shí)不發(fā)射鬧鐘。
AlarmManager.RTC_WAKEUP,硬件鬧鐘,當鬧鐘發(fā)躰時(shí)喚醒手機休眠;
AlarmManager.ELAPSED_REALTIME,真實(shí)時(shí)間流逝鬧鐘,不喚醒手機休眠;當手機休眠時(shí)不發(fā)射鬧鐘。
AlarmManager.ELAPSED_REALTIME_WAKEUP,真實(shí)時(shí)間流逝鬧鐘,當鬧鐘發(fā)躰時(shí)喚醒手機休眠;

RTC鬧鐘和ELAPSED_REALTIME最大的差別就是前者可以通過(guò)修改手機時(shí)間觸發(fā)鬧鐘事件,后者要通過(guò)真實(shí)時(shí)間的流逝,即使在休眠狀態(tài),時(shí)間也會(huì )被計算。




以上摘自:http://hualang.iteye.com/blog/1304054


還有,我們這里是調用廣播的形式來(lái)實(shí)現的,也可以用service的方式來(lái)進(jìn)行實(shí)現,只要把PendingIntent改動(dòng)一下即可,相關(guān)代碼:
PendingIntent.getService(MainActivity.this, 0,new Intent(MainActivity.this,AlarmService.class), 0);
其他的均相同。


完整Demo下載:
http://download.csdn.net/detail/jakend/6612033

 

 

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Broadcast調用Service做的一個(gè)定時(shí)器 - 醋溜的 - JavaEye技術(shù)網(wǎng)站
AlarmManager鬧鐘管理的使用
Service關(guān)閉又自動(dòng)啟(AlarmManager、PendingIntent、BroadcastReceiver、Service)
android service 后臺執行定時(shí)任務(wù)
10.5 AlarmManager(鬧鐘服務(wù))
Android 鬧鐘機制實(shí)現定時(shí)任務(wù)
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久