AlarmManager提供了访问系统警报的服务,只要在程序中设置了警报服务,AlarmManager就会通过onReceive()方法去还行这些事件,就算系统处于待机状态,同样不会影响运行。...可以通过Context.getSystemService方法来获取该服务。接下来我们将使用AlarmManager来制作一个最简单的闹钟。...让我们来看一下AlarmManager都为我们提供了哪些方法,如下: ?...要实现闹钟,首先需要创建一个继承自BroadcastReceiver的类,实现onReceive方法来接收这个Alarm服务,然后通过建立Intent和PendingIntent连接来调用Alarm组件...(MainActivity.this, 0, intent, 0); // 获取闹钟管理的实例 AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE
从API 19以后,setRepeating不再准确。...,没有了repeat,就是设置了闹钟只能响一次了,而且这两种方法都可以设置精确的,第一个相对于第二种方法来说,应该是比较省电的。...因为setWindow这个方法允许应用程序利用电池优化来自交货批处理即使它适度的及时性要求警报。 因此需要解决如下几个主要问题: 1.如何设置一个闹钟每天都准确提醒呢?...1.如何设置一个闹钟每天都准确提醒呢?...提醒完毕可以再重新设置一次 public class AlarmReceiver extends BroadcastReceiver { private AlarmManager alarmManager
调度重复的闹钟 闹钟(基于AlarmManager类)给予你一种在应用使用期之外执行与时间相关的操作的方法。你可以使用闹钟初始化一个长时间的操作,例如每天开启一次后台服务,下载当日的天气预报。...最佳实践方法 在设计重复闹钟过程中,你所做出的每一个决定都有可能影响到你的应用将会如何使用系统资源。例如,我们假想一个会从服务器同步数据的应用。...setRepeating()方法。...要取消闹钟,可以调用AlarmManager的 cancel()方法,并把你不想激活的PendingIntent传递进去,例如: // If the alarm has been set, cancel...这意味着除非应用显式地启用它,不然该接收器将不被调用。这可以防止接收器被不必要地调用。
android:layout_alignParentStart="true" android:layout_alignParentEnd="true" / </RelativeLayout MainActivity.java...package com.example.haige.alarmmanager; import android.app.Activity; import android.app.AlarmManager...android.content.Context; import android.content.Intent; import android.os.Bundle; import android.view.View; public class MainActivity...} 广播接收器AlarmReceiver.java package com.example.haige.alarmmanager; import android.content.BroadcastReceiver...android.content.Context; import android.content.Intent; import android.widget.Toast; public class AlarmReceiver extends BroadcastReceiver
ACTION 事件 ; private BroadcastReceiver receiver = new BroadcastReceiver() { @Override...; import android.app.PendingIntent; import android.app.Service; import android.content.BroadcastReceiver...SystemClock.elapsedRealtime(), 50000, pendingIntent); } /** * 接收上面每隔 5 秒发送的广播 */ private BroadcastReceiver...receiver = new BroadcastReceiver() { @Override public void onReceive(Context context...android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".<em>MainActivity</em>
循环中不断地进行解析, * 如果当前的解析事件不等于XmlPullParser.END_DOCUMENT,说明解析工作还没完成, * 调用next()方法后可以获取下一个解析事件。...在while 循环中,我们通过getName()方法得到当前结点的名字, * 如果发现结点名等于id、name 或version,就调用nextText()方法来获取结点内具体的内容, * 每当解析完一个...之后这条消息会被添加到MessageQueue的队列中等待被处理,而Looper则会一直尝试从MessageQueue中取出待处理消息,最后分发回Handler的handleMessage()方法中。...* 注意,在这个方法中是不可以进行UI 操作的, * 如果需要更新UI元素,可以调用publishProgress(Progress...) * publishProgress(Integer......publishProgress(Progress...)方法后,这个方法就会很快被调用, * 方法中携带的参数就是在后台任务中传递过来的。
这部分服务大部分都有一个Manager类,其实就是一个RPC调用,用户通过调用xxxManager的方法,实际上被Binder给迁移到system_server进程中对应的xxxManagerService...(闹钟服务) 官方API AlarmManager 相关方法 ?...另外,这里用set方法可能有点不准,如果要 更精确的话可以使用setExtra()方法来设置AlarmManager!...= (AlarmManager) getSystemService(ALARM_SERVICE); Intent intent = new Intent(MainActivity.this...PendingIntent pi = =PendingIntent.getActivity(MainActivity.this, 0, intent, 0); 调用AlarmManager的set( )
3、使用AlarmManager进行定时操作。...android:label="@string/app_name" android:theme="@style/AppTheme" <activity android:name=".<em>MainActivity</em>...System.currentTimeMillis()); PendingIntent contentIntent = PendingIntent.getActivity(this, 0, new Intent(this, <em>MainActivity</em>.class...PendingIntent.getBroadcast(this, 0, intent, 0); am.cancel(pi); // 注销广播 unregisterReceiver(alarmReceiver); } <em>BroadcastReceiver</em>...alarmReceiver = new <em>BroadcastReceiver</em>() { @Override public void onReceive(Context context, Intent
manager.cancel(pi); } } AlarmReceiver代码: package bai.cslg.servicebestpractice; import android.content.BroadcastReceiver...android.content.Intent; /** * Created by baiqihui on 2016/9/21. */ public class AlarmReceiver extends BroadcastReceiver...从Service代码中可以看出,onCreate()中完成对mediaPlayer的初始化(因为mediaPlayer只需要初始化一次),在onStartCommand()中开启一个新的线程,线程中通过...handler发送一条空的消息,并且在handler的handleMessage()方法中完成AlertDialog的创建以及播放闹铃,要注意这里创建的是一个全局的AlertDialog。...在onStartCommand()还执行了AlarmManager的初始化以及时间的设定,因为AlarmManager中第三个参数PendingIntent能够执行一个广播,所以还需要写一个广播接收者。
notifyByAlarmByReceiver无论是在广播还是在服务中,都可以调用这个进行立即通知 notifyByAlarm在activity中调用改方法,将开启定时通知 notifyMsg这个是真正实现通知的方法...,但并不需要外部调用 服务或者广播类及其配置 服务和广播配置一个就可以了,目前我才有的是服务的配置方法 服务的写法 import android.app.Service; import android.content.Intent... 广播的写法 import android.content.BroadcastReceiver...import com.util.NotificationUtil; import java.io.IOException; public class AlarmReceiver extends BroadcastReceiver...,可以在MainActivity的OnCreate方法中调用: long now = System.currentTimeMillis(); long interval[] = {0,10,60,3000,6000,12000,30000,50000,60000,100000
Android的闹钟实现机制, 需要调用AlarmManager.set()将闹铃时间记录到系统中,当闹铃时间到后,系统会给应用程序发送广播,我们只需要去注册广播接收器就可以了。...本文分三部分讲解如何实现闹钟: 目录: 1. 设置闹铃时间; 2. 接收闹铃事件广播; 3. 重开机后重新计算并设置闹铃时间; 1....直到系统下次被唤醒才传递它,该闹铃所用的时间是相对时间,是从系统启动后开始计时的,包括睡眠时间,可以通过调用SystemClock.elapsedRealtime()获得。...如果使用RTC_WAKEUP类型 应该调用System.currentTimeMillis()获取从1970.1.1号以来的时间在加上你设定的延迟时间 alarmManager.set(AlarmManager.RTC_WAKEUP..., System.currentTimeMillis()+5000, sender); setRepeating方法有4个参数,这些参数的含义如下: type:表示警报类型,一般可以取的值是AlarmManager.RTC
涉及知识点: 1)BroadCastReceiver任务接收 2)CountDownTimer倒计时 3)AlertDialog 任务提醒 4)AlarmManager 定时任务 这里实现的需求时每天定时...第一步是实现简单布局,在布局中写两个Button,一个设置,一个取消 第二步:初始化页面布局及Button public class MainActivity extends AppCompatActivity...implements View.OnClickListener{ Button btn_set,btn_cancel; AlarmManager am; PendingIntent pi; long...void cancelAlarm(){ am.cancel(pi); } } 广播主要代码 import android.app.AlertDialog; import android.content.BroadcastReceiver...import android.view.WindowManager; import android.widget.Toast; public class AlarmReceiver extends BroadcastReceiver
date.setTimeInMillis(time); timeLable=String.format("%d月%d日 %d:%d", date.get(Calendar.MONTH)+1,//getMonth的返回值是从0...getVisibility()== View.VISIBLE) { timerHander.sendEmptyMessageDelayed(0, 1000);//1000毫秒后再执行handleMessage方法...; import android.app.PendingIntent; import android.content.BroadcastReceiver; import android.content.Context...android.content.Intent; /** * Created by lenovo on 2017/11/23. */ public class AlarmReceiver extends BroadcastReceiver...,PlayAlarmAty.class); i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(i); } } MainActivity
AlarmManager am; am = (AlarmManager)getSystemService(ALARM_SERVICE); am.set(AlarmManager.RTC_WAKEUP,...AlarmManager am; am = (AlarmManager)getSystemService(ALARM_SERVICE); am.set(AlarmManager.RTC_WAKEUP,...); AlarmManager am; am = (AlarmManager)getSystemService(ALARM_SERVICE); am.setRepeating(AlarmManager.RTC_WAKEUP...com.cn.daming; import android.content.Context; import android.content.Intent; import android.content.BroadcastReceiver...; import android.os.Bundle; public class CallAlarm extends BroadcastReceiver { @Override public void
AlarmManager简介 AlarmManager实质是一个全局的定时器,是Android中常用的一种系统级别的提示服务,在指定时间或周期性启动其它组件(包括Activity,Service,BroadcastReceiver...本文将讲解一下如何使用AlarmManager实现定时提醒功能。...RTC:指定当系统调用System.currentTimeMillis()方法返回的值与triggerAtTime相等时启动operation所对应的设备(在指定的时刻,发送广播,但不唤醒设备)。...RTC_WAKEUP:指定当系统调用System.currentTimeMillis()方法返回的值与triggerAtTime相等时启动operation所对应的设备(在指定的时刻,发送广播,并唤醒设备...广播配置 新建闹钟BroadCastReceiver: public class AlarmReceiver extends BroadcastReceiver { private NotificationManager
PendingIntent 准备工作复习一下PendingIntent,前面的博文《Android开发笔记(五十)定时器AlarmManager》已经提到了它。...若调用该方法,则setProgress的设置将失效 setProgress : 设置进度条与当前进度。...若调用该方法,则setNumber的设置将失效 setContentIntent : 设置内容的PendingIntent,在点击该通知时触发Intent动作 setDeleteIntent : 设置删除的...在以上参数都设置完毕后,调用该方法会返回Notification对象 NotificationManager Notification只是生成通知的内容,实际推送动作还需要借助于系统的通知服务来实现...调用该方法后,状态栏和下拉列表中的指定通知将消失 cancelAll : 取消所有通知 下面是NotificationManager的调用代码例子: NotificationManager
如何才能访问?...PublicBusiness中定义,因为周密的如果有自己的方法(打麻将)返回onbind去,那在mainactivity中能访问这个方法了。...可以把想对外提供的方法定义一个接口,然后实现它。在mainactivity中可以强转成接口,提供对外的方法。...但是需要注意,我们是完全有可能对一个服务既调用了startService()方法,又调用了bindService()方法的,这种情况下该如何才能让服务销毁掉呢?...); 接下来调用 AlarmManager的 set()方法就可以设置一个定时任务了,比如说想要设定一个任务在 10秒钟后执行,就可以写成: long triggerAtTime = SystemClock.elapsedRealtime
其实答案非常简单,相对于 Handler 来说,使用 sendEmptyMessageDelayed 方法是依赖于 Handler 所在的线程的,如果线程结束,就起不到定时任务的效果;而 AlarmManager...它们之间的区别就是前者是从手机开机后的时间,包含了手机睡眠时间;而后者使用的就是手机系统设置中的时间。...} private BroadcastReceiver alarmReceiver = new BroadcastReceiver() { @Override public void...之前在 Android 4.4 上能用的 setExact() 方法在 Android 6.0 上因为低电耗模式又不能正常使用了。...(), TIME_INTERVAL, pendingIntent); } private BroadcastReceiver alarmReceiver = new BroadcastReceiver
AlarmManager简介 AlarmManager是Android中常用的一种系统级别的提示服务,在特定的时刻为我们广播一个指定的Intent。...ONE_Miniute=60*1000; private static final int PENDING_REQUEST=0; public AlarmService() { } /** * 调用...Service都会执行到该方法 */ @Override public int onStartCommand(Intent intent, int flags, int startId)...()+ONE_Miniute;//从开机到现在的毫秒书(手机睡眠(sleep)的时间也包括在内 Intent i=new Intent(this, AlarmReceive.class);...UnsupportedOperationException("Not yet implemented"); } } 2 AlarmReceive类 public class AlarmReceive extends BroadcastReceiver
领取专属 10元无门槛券
手把手带您无忧上云