導航:首頁 > 操作系統 > androidalarm定時

androidalarm定時

發布時間:2023-03-16 20:03:12

android定時的基本實現

在Android中大概又兩種實現方式:一種是java中的Timer類,一種是Android中的Alerm機制。兩者功能差不多。

Alerm具有cup運行鎖,而Timer不具有cpu鎖。

每種手機都具有自己的休眠策略,當長時間不是手機的情況下,cpu就會進入休眠狀態。在這種情況下Timer將無法工作。而Alerm具有cpu鎖,將會導致cpu無法休眠。

AlarmManager  manger=(AlarManger)getSystemService(Context.ALARM_SERVICE);

manger.set(int flag,long time,PendingIntent  pendingIntent);

set方法參數說明:

第一個參數flag為工作類型:

AlarmManger .ELAPSED_REALTIME:讓定時時間從開機算起時間算起,但不會喚醒cpu。

AlarmManger.ELAPSED_REALTIME_WAKEUP:同樣表示讓定時時間從開機算起,但會喚醒                                        激辯運                                       CPU。

RTC:表示讓定時任務從1970年1月1日算起,但是不喚醒cpu。

RTC_WAKEUP:表示讓定時任務從1970年1月1日算起,但是喚醒cpu。

提示:SystemClock.elapsedReadtime()---獲取系統開機至今所經歷的毫秒數;

           System.currentTimeMillis()-------方法獲取1970年1月1日至今天的毫秒數;

第二個參數: 延時的時間,單位毫秒;

第三個參數: PendingIntent指定具體動作;

注意:Android4.4版本後set方法觸發不準確,有可能會延時一段時間執行(這不是Bug,是電池性能優化,系統會檢測目前有多少個Alarm任務存在,然後將觸發相近的幾個任務一起灶團執行)

如果要精確執行,將 setExact() 方法代替set()方法。

cancel ( PendingIntent   operation )

方法將會取消Intent匹配的任何鬧鍾。

setRepeating(int type,long triggerAtTime,long interval,PendingIntent operation);

參數說明:interval重復時間間隔;(4.4後觸發不準時)

AlarmManger的其它功能:

設置系統時間和時區

添加許可權:android.permission.SET_TIME;

通過setTime(long millis)方法設置系統時間;

需要添加android.permission.SET_TIME_ZONE許可權。

通過setTimeZone(String tz)方法明梁設置時區;

Ⅱ Android AlarmManger+service設置通知欄定時推送,清理後失效

我自己整理的:

有問題再問我吧。

Ⅲ android中如何實現定時提醒

android中可以使用鬧鍾進行提醒,你只需要告知系統你想在什麼時候被提醒,然後需要一個鬧鍾的廣播接收器,當到你設置的時間時,系統會給你發送一條廣播,當你接收到廣播後你就可以做一些操作,比如啟動你的app,或者跳轉到你app中的任何一個界面。代碼如下:

//發送鬧鍾請求
Intent intent = new Intent(mContext, AlarmReceiver.class);
intent.setAction("something");
intent.setType("something");
intent.setData(Uri.EMPTY);
intent.addCategory(「something」);
intent.setClass(context, AlarmReceiver.class);
// 以上給intent設置的四個屬性是用來區分你發給系統的鬧鍾請求的,當你想取消掉之前發的鬧鍾請求,這四個屬性,必須嚴格相等,所以你需要一些比較獨特的屬性,比如伺服器返回給你的json中某些特定欄位。
//當然intent中也可以放一些你要傳遞的消息。
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, alarmCount, intent, 0);
//alarmCount是你需要記錄的鬧鍾數量,必須保證你所發的alarmCount不能相同,最後一個參數填0就可以。
AlarmManager am = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, time, pendingIntent);
//這樣鬧鍾的請求就發送出去了。time是你要被提醒的時間,單位毫秒,注意不是時間差。第一個參數提醒的需求用我給出的就可以,感興趣的朋友,可以去google一下,這方面的資料非常多,一共有種,看一下就知道區別了。
//取消鬧鍾請求
Intent intent = new Intent(mContext, AlarmReceiver.class);
intent.setAction("something");
intent.setType(something);
intent.setData(Uri.EMPTY);
intent.addCategory(something);
intent.setClass(context, AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(mContext, alarmCount, intent, 0);
//alarmCount對應到你設定時的alarmCount,
AlarmManager am = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE);
am.cancel(pendingIntent);
//接著,你需要一個廣播接收的類:
public class AlarmReceiver extends BroadcastReceiver{

private NotificationManager manager;

@Override
public void onReceive(Context context, Intent intent) {
manager = (NotificationManager)context.getSystemService(android.content.Context.NOTIFICATION_SERVICE);
//例如這個id就是你傳過來的
String id = intent.getStringExtra("id");
//MainActivity是你點擊通知時想要跳轉的Activity
Intent playIntent = new Intent(context, MainActivity.class);
playIntent.putExtra("id", id);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 1, playIntent, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
builder.setContentTitle("title").setContentText("提醒內容").setSmallIcon(R.drawable.app_icon).setDefaults(Notification.DEFAULT_ALL).setContentIntent(pendingIntent).setAutoCancel(true).setSubText("二級text");
manager.notify(1, builder.build());
}
}

Ⅳ android 設置系統鬧鍾和系統日歷提醒

現在有一個定時提醒的功能, 用 AlarmManager 自己來做,有多少坑做過的都知道。(應用被kill, 應用保活,息屏,關機重啟,多版本兼容問題。。。)。要自己做一個完善的不是 1-2天就能搞定的。當然如果是應用內簡單的定時執行,定時提醒 AlarmManager 還是很好用的。

https://www.jianshu.com/p/1f919c6eeff6

對於這種需求可以調用系統鬧鍾或用系統日歷的提醒事件來做。

日歷提醒功能可以直接用 Intent 起日歷提醒界面,這樣最簡單,不需要許可權。

調用API 直接設置需要動態申請許可權
https://www.cnblogs.com/loaderman/p/10489592.html

https://developer.android.com/guide/topics/providers/calendar-provider

設置系統鬧鍾需要 SET_ALARM 許可權

取消鬧鍾用 AlarmClock.ACTION_DISMISS_ALARM

Ⅳ android 中alarm是什麼意思

alarm的意搭歲廳思是知隱定雀此時任務。

import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.widget.Toast; public class AlarmReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context, R.string.hello_world, Toast.LENGTH_SHORT).show(); } }

閱讀全文

與androidalarm定時相關的資料

熱點內容
如何在文件夾中顯示創建日期 瀏覽:593
淮南程序員接私活項目 瀏覽:482
怎樣加密自己的密碼 瀏覽:527
安卓怎麼關許可權保護隱私 瀏覽:390
海牛微視app怎麼用 瀏覽:70
單片機怎樣選變壓器 瀏覽:829
癌症pdf 瀏覽:725
雲伺服器鏡像批量部署環境 瀏覽:683
安卓手機瀏覽器能訪問什麼網站 瀏覽:254
找不到網站的伺服器ip地址該如何解決 瀏覽:743
演算法十個數降序排列 瀏覽:95
基於單片機的老年人健康監測系統 瀏覽:706
python入門經典pdf下載 瀏覽:17
東芝變頻2p空調壓縮機 瀏覽:227
自家wifi怎麼能加密 瀏覽:644
紅米k40加密門禁卡 瀏覽:847
什麼樣的源碼好看 瀏覽:156
手機主伺服器有什麼用 瀏覽:612
程序編寫命令 瀏覽:597
android發送心跳包 瀏覽:385