`
Leif_冬
  • 浏览: 45239 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

android AlarmManager 的相關應用

阅读更多

AlarmManager 可以設置固定時間,固定周期性的操作

120秒後每60秒調用一次UpdateService:

 private void setAlarmTime(){
        Slog.i("TEST", "Start self-define alarm");
        currentSystemTime = System.currentTimeMillis();
        try {
            nextCheckAlarmTime = Long.parseLong(Settings.System.getString(mSystemContext.getContentResolver(), Settings.System.KEY_NEXT_CHECK_TIME));
        }catch (Exception e){
            e.printStackTrace();
        }
        manager = (AlarmManager) mSystemContext.getSystemService(ALARM_SERVICE);
        Intent intent = new Intent();
        intent.setComponent(new ComponentName("com.android.settings","com.android.settings.system.UpdateService"));
        pi = PendingIntent.getService(mSystemContext,0,intent,0);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.CUPCAKE) {
            if (nextCheckAlarmTime - currentSystemTime > 0) {
                manager.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, 120 * 1000 + SystemClock.elapsedRealtime(), 600 * 1000, pi);
            } else {
                Intent intentSerive = new Intent();
                intentSerive.setComponent(new ComponentName("com.android.settings", "com.android.settings.system.UpdateService"));
                mSystemContext.startService(intentSerive);
                setAlarmChange();
            }
            Slog.i("TEST", "End self-define alarm");
        }
    }

每天(或是周期性)固定的時間進行調用UpdateService的操作:

private void setAlarmChange(){
        Slog.i(TAG, "Start self-define alarm");
        manager = (AlarmManager) mSystemContext.getSystemService(ALARM_SERVICE);
        Intent intent = new Intent();
        intent.setComponent(new ComponentName("com.android.settings","com.android.settings.system.UpdateService"));
        pi = PendingIntent.getService(mSystemContext,0,intent,0);
        timedate = Settings.System.getString(mSystemContext.getContentResolver(),Settings.System.KEY_CHECK_TIME_VALUE);
        dayset = Integer.parseInt(Settings.System.getString(mSystemContext.getContentResolver(), Settings.System.KEY_UPDATE_INTERVAL))+1;
        temptimedate = timedate.split(":");
        hourset = temptimedate[0];
        mintuesset = temptimedate[1];
        Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(System.currentTimeMillis());
        calendar.set(Calendar.HOUR_OF_DAY, Integer.parseInt(hourset));
        calendar.set(Calendar.MINUTE, Integer.parseInt(mintuesset));
        calendar.add(Calendar.DATE,dayset);
        nextCheckAlarmTime = calendar.getTimeInMillis()+dayset*3600*24*1000;
        Settings.System.putString(mSystemContext.getContentResolver(),Settings.System.KEY_NEXT_CHECK_TIME,String.valueOf(nextCheckAlarmTime));
                // setRepeating() lets you specify a precise custom interval--in this case,
        manager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
                dayset*3600*24*1000, pi);
        Slog.i(TAG, "Start self-define alarm");
    }

記得開啓Alarmagr前先清除之前的對象

private void cancelAlarmTime(){
        if(manager!=null)
        manager.cancel(pi);
    }

 

分享到:
评论

相关推荐

    [Android][AlarmManager]

    AlarmManager提供了访问系统闹钟的服务。它允许你安排你的应用在未来某个时间点运行。这就相当于定时任务。对于少于60s的定时任务,不推荐使用AlarmManager,可以使用更高效的的Handler来处理频发的任务。

    Android开发之AlarmManager的用法详解

    主要介绍了Android开发之AlarmManager的用法,是Android应用开发中非常实用的技能,需要的朋友可以参考下

    Android应用开发详解

    Broadcast Receiver Android 广播事件处理 Broadcast Receiver,讲述了广播事件处理机制、Notification、NotificationManager和AlarmManager的使用 第9章 Android中的数据存取 Android中的数据存取,讲述了Android...

    android AlarmManager sevice

    开发的应用省电也是件大事,上传的 AlarmManager sevice,主要解决sevice 耗电问题 。

    alarmmanager(包括api19之前和之后)共有五种

    alarmmanager 计时器,android自己的计时器,区别于timer,,包括在api19之前的两种方式,以及api19之后的两种(都是单次的),主要运用的也就是这几种。还有api19后的重复执行的实现。(结果在应用中用文字表述了)...

    Android闹铃服务AlarmManager用法深入分析

    本文实例讲述了Android闹铃服务AlarmManager用法。分享给大家供大家参考,具体如下: 对应AlarmManage有一个AlarmManagerServie服务程 序,该服务程序才是正真提供闹铃服务的,它主要维护应用程序注册下来的各类闹铃...

    Android实现定时任务及闹钟

    android中定时有很多种是实现,常见的Handler 与Thread的结合,handler.postDelayed ,以及要使用的AlarmManger 等都可以实现定时任务的执行,但是使用场景却大不相同,这里主要是怎么用AlarmManager实现定时任务。...

    MyAlarm:Android中的Alarmmanager。 这个例子在android 2.1 +

    MyAlarm Android中的Alarmmanager。... /////////////////////////////////// // ////////////////////////////////////////// /////////////适用于android应用程序的Alarmmanager,此示例自2.1版开始生效

    mooc_android_lesson18_AlarmManager和PendingIntent实现定时提醒功能

    根据本讲学习内容,学会运用AlarmManager和PendingIntent实现定时提醒功能。 (1) 提交的作业包中含有应用程序运行效果截图。

    基于Android应用的性能优化.pdf

    * 使用AlarmManager来控制应用的唤醒状态 Android性能优化是一个非常复杂的问题,需要从多个方面入手,包括卡顿优化、ANR优化、内存优化和电量优化等。只有通过对这些方面的优化,才能提高Android应用的性能和用户...

    Android闹钟机制实现定时任务功能

    Android的闹钟实现机制, 需要调用AlarmManager.set()将闹铃时间记录到系统中,当闹铃时间到后,系统会给应用程序发送广播,我们只需要去注册广播接收器就可以了。 本文分三部分讲解如何实现闹钟: 目录: 1. 设置...

    android开发资料大全

    android用户界面之AlarmManager教程实例汇 android用户界面详尽教程实例 android用户界面之Widget教程实例汇总 android用户界面之TabHost教程实例汇总 android用户界面之Gallery教程实例汇总 android用户界面之按钮...

    android 后台定时提醒(Service,AlarmManager的使用)

    笔者最近将工具书上Service的有关内容都学习了一下,于是打算做一个小应用来练一下手了。 考虑到自己每次在敲代码或者打游戏的时候总是会不注意时间,一不留神就对着电脑连续3个小时以上,对眼睛的伤害还是挺大的,...

    Android应用开发-护眼提醒

    在学习《第一行代码》的服务那章时,涉及到了alarmmanager的内容。然后笔者当时正好在关注“程序员如何保护眼睛”的问题。 于是便自己做了一个demo,用于每一个小时左右提醒一次,后来周围的朋友看到我有这个定时...

    疯狂Android讲义源码

     第1章 Android应用与开发环境 1  1.1 Android的发展和历史 2  1.1.1 Android的发展和简介 2  1.1.2 Android平台架构及特性 3  1.2 搭建Android开发环境 5  1.2.1 下载和安装Android SDK 5  1.2.2 安装...

    解析Android中如何做到Service被关闭后又自动启动的实现方法

    我们在使用某些Android应用的时候,可能会发现安装了某应用以后,会有一些服务也会随之运行。而且,这些服务每次都会随着手机开机而启动。有的服务做的更绝,当用户在运行的服务中手动停止该服务以后,过了一段时间...

    详解Android版本适配:9.0 Pie

    Android 9.0 中限制了 HTTP(明文传输)网络请求,若仍继续使用HTTP请求,则会在日志中提示以下异常(只是无法正常发出请求,不会导致应用崩溃): java.net.UnknownServiceException: CLEARTEXT communication to...

Global site tag (gtag.js) - Google Analytics