android 定时器_后台定时执行_定时刷新提醒实现Demo
抢购现在非常流行、那么随着抢购而来的就是定时提醒功能、最近研究了一下定时提醒、发现只能通过AlarmManager这个api来实现、下面我就把实现的代码贴出来、以供以后使用
这个类提供了一种系统级的alarm服务、这个服务允许用户安排自己的应用程序在将来的某一个时间点运行、当设置的alarm响起、那么之前系统为这个alarm注册的Intent就会自动的运行目标应用程序(如果此时应用程序还没有运行)、即使在系统处于休眠状态时(如果在此期间alarm响起、那么就会唤醒设备)、系统注册的alarm依旧保持、但是当alarm被关闭或者是系统重启后、之前设置的alarm就会被清除、通常这个intent对应的是一个广播(BroadcastReceiver)
AlarmManager类的方法的参数最重要的就是PendingIntent、PendingIntent是Intent的一个增强版本、内部自己会调用startIntent()、所以我们在外面就不用再调用startIntent()、而Intent对应的广播就会自己执行、关于更多的api和方法请访问google的官方文档http://developer.android.com/reference/android/app/PendingIntent.html 、由于各种原因可能国内访问不了、你可以看看这个文章、如何*访问国外网站http://dwtedx.com/forum_120.html
下面是MainActivity onCreate源代码
// 创建Intent对象,action指向广播接收类,附加信息为字符串“你该打酱油了” Intent intent = new Intent("com.dwtedx.MyReceiver"); intent.putExtra("msg", "你该起床了"); // 创建PendingIntent对象封装Intent,由于是使用广播,注意使用getBroadcast方法 PendingIntent pi = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); // 获取AlarmManager对象 AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE); am.cancel(pi); // 设置闹钟从当前时间开始,每隔10分钟执行一次PendingIntent对象,注意第一个参数与第二个参数的关系 am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 5 * 1000, pi);
广播MyReceiver源代码
@Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub String msg = intent.getStringExtra("msg") transferLongToDate("yyyy-MM-dd HH:mm:ss", System.currentTimeMillis()); Log.i("SendReceiver", msg); Toast.makeText(context, msg, Toast.LENGTH_SHORT).show(); } private String transferLongToDate(String dateFormat,Long millSec){ SimpleDateFormat sdf = new SimpleDateFormat(dateFormat); Date date= new Date(millSec); return sdf.format(date); }
AndroidManifest.xm注册广播
<receiver android:name=".MyReceiver" android:enabled="true" android:exported="true" tools:ignore="ExportedReceiver" > <intent-filter> <action android:name="com.dwtedx.MyReceiver" /> </intent-filter> </receiver>
在BroadcastReceiver里面、大家可以把自己想做的事件或想执行的代码放到onReceive()方法里就ok了、最后把我自己的研究AlarmManager的一个Demo源代码贴出来、希望对大家有帮助
源代码下载链接: http://dwtedx.com/download.html?bdkey=s/1kTqqz9X 密码: uk1e