`
yxwang0615
  • 浏览: 559731 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

ApiDemos 之 AlarmManager

 
阅读更多

 

AlarmManager的使用机制有的称呼为全局定时器,有的称呼为闹钟。通过对它的使用,个人觉得叫全局定时器比较合适,其

 

实它的作用和Timer有点相似。都有两种相似的用法:(1)在指定时长后执行某项操作(2)周期性的执行某项操作。

 

AlarmManager对象配合Intent使用,可以定时的开启一个Activity,发送一个BroadCast,或者开启一个Service.

 

 

下面的代码详细的介绍了两种定时方式的使用:

 

(1)在指定时长后执行某项操作:

 

MainAct.java:

 

 

public class MainAct extends Activity {
	Toast mToast;
	@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button btn = (Button)findViewById(R.id.btn);
        btn.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				Intent intent = new Intent("oneshot");
				PendingIntent pintent = PendingIntent.getBroadcast(MainAct.this, 0, intent, 0);
				//根据传入的NAME来取得对应的Object,然后转换成相应的服务对象
				AlarmManager am = (AlarmManager)MainAct.this.getSystemService(ALARM_SERVICE);
				
				Calendar canlender = Calendar.getInstance();//获取日历的实例
				canlender.setTimeInMillis(System.currentTimeMillis());// 代表当前时间的日历  
				canlender.add(canlender.SECOND, 30);// 将时间设置为现在的30s以后  (定时时间)
				//设置并启动定时器
				am.set(AlarmManager.RTC_WAKEUP, canlender.getTimeInMillis(), pintent);
				if (mToast != null) {
		                mToast.cancel();
	            }
	            mToast = Toast.makeText(MainAct.this, "one shot alarm will go off in 30 seconds.",
	                    Toast.LENGTH_LONG);
	            //弹出Toast,用于提示定时任务已经开启
	            mToast.show();
	        }
		});
        
    }
}
 

 清单文件:

 

 

 <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".MainAct"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
		<receiver android:name=".OneShotAlarm">
			<intent-filter>
				<action android:name="oneshot"/>
			</intent-filter>
		</receiver>
    </application>

 

OneShotAlarm.java

 

 

public class OneShotAlarm extends BroadcastReceiver
{
    @Override
    public void onReceive(Context context, Intent intent)
    {
        Toast.makeText(context, R.string.one_shot_received, Toast.LENGTH_SHORT).show();
    }
}
 

(2)周期性的执行某项操作

 

start repeating AlarmManager:

 

  Button btn1 = (Button)findViewById(R.id.btn1);
        btn1.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				Intent intent = new Intent("repeating");
	            PendingIntent sender = PendingIntent.getBroadcast(MainAct.this,
	                    0, intent, 0);
	            
	            // We want the alarm to go off 30 seconds from now.
	            //系统启动到目前为止的时间
	            long firstTime = SystemClock.elapsedRealtime();
	            firstTime += 15*1000;

	            // Schedule the alarm!
	            AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
	           
	            //public void setRepeating (int type, long triggerAtTime, long interval, PendingIntent operation)
	            //以15秒一个周期发送广播...
	            am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
	                            firstTime, 15*1000, sender);

	            // Tell the user about what we did.
	            if (mToast != null) {
	                mToast.cancel();
	            }
            mToast = Toast.makeText(MainAct.this, "已启动周期性计时器~",
	                    Toast.LENGTH_LONG);
	            mToast.show();
	        }
		});
 

 

stop repeating Alarm:

 

 

 Button btn2 = (Button)findViewById(R.id.btn2);
        btn2.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View v) {
				 Intent intent = new Intent("repeating");
		            PendingIntent sender = PendingIntent.getBroadcast(MainAct.this,
		                    0, intent, 0);
		            
		            AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
		            am.cancel(sender);

		            // Tell the user about what we did.
		            if (mToast != null) {
		                mToast.cancel();
		            }
		            mToast = Toast.makeText(MainAct.this, "alarm canceled",
		                    Toast.LENGTH_LONG);
		            mToast.show();
			}
		});
分享到:
评论

相关推荐

    Android6.0 Api Demos

    **Android 6.0 API Demos详解** Android 6.0 API Demos 是一个官方提供的示例代码集合,它展示了Android 6.0 (Marshmallow) SDK中的各种API功能和用法。这些示例旨在帮助开发者更好地理解和学习如何在实际应用中...

    ApiDemos示例源码

    《ApiDemos示例源码解析》 ApiDemos是Android平台提供的一款示例应用,它包含了Android SDK中的各种API功能展示,对于开发者来说,这是一个非常宝贵的资源库,可以帮助我们深入理解和学习Android系统的API用法。...

    最新Android apidemos

    《深入探索Android API Demos:最新实践与技术解析》 Android API Demos是Google官方提供的一款用于展示Android SDK中各种API功能和用法的应用程序,它涵盖了从基础控件到高级特性的全方位示例,是开发者学习...

    Android ApiDemos apk

    《Android ApiDemos apk:深入理解Android应用开发的实践指南》 Android ApiDemos apk是Android开发者们熟悉的一个示例程序,它包含了Android SDK中的各种API功能演示,为开发者提供了丰富的学习资源。这个应用程序...

    ApiDemos(6.0)

    ApiDemos 6.0

    8.1版本ApiDemos源码

    《Android 8.1版本ApiDemos源码详解:深入理解API使用实例》 在Android开发领域,理解和熟练运用各种API是提升技能的关键步骤。"8.1版本ApiDemos源码"为开发者提供了一个宝贵的资源,它包含了Android 8.1系统中各种...

    最新ApiDemos源码,直接下载导入即可使用

    - **兼容性**:随着Android版本的更新,ApiDemos也会随之更新,展示新版本API的使用,帮助开发者适应不同Android版本的变化。 6. **社区贡献**: - **开源文化**:ApiDemos作为开源项目,鼓励开发者贡献自己的...

    Android ApiDemos

    《Android ApiDemos详解——揭示Android开发的奥秘》 Android ApiDemos是Android开发者学习和探索平台功能的重要资源库,它集成了Android SDK中的各种控件、绘图技术以及四大组件(Activity、Service、...

    android的ApiDemos

    API Demos 是 Google 为了 Android 开发者所提供的一个 Android API 合集,其中包含了很多的 API 范例,同时遵循了良好的代码规范,是一个值得开发者研究和学习的典型。android的ApiDemos,需要解压缩后使用。

    安卓ApiDemos

    《安卓ApiDemos详解——掌握Android API实践精髓》 安卓ApiDemos,作为一个开发者们耳熟能详的项目,它是Android SDK中一个重要的组成部分,它提供了丰富的API实例,旨在帮助开发者深入理解和掌握Android系统的各种...

    Android6.0 ApiDemos.apk

    从官方预览包里提取的Android6.0 ApiDemos.apk,方便安装在真机上查看实例的实际效果。

    Android ApiDemos不报错版本,eclipse可用

    **Android ApiDemos详解** ApiDemos是Android官方提供的一款示例应用,它包含了Android SDK中的各种API功能演示,帮助开发者了解和学习Android系统提供的各种API接口和功能。这个"Android ApiDemos不报错版本"是...

    android api19 ApiDemos

    《Android API 19 ApiDemos详解》 在Android开发领域,API Demos是一个非常重要的学习资源,它包含了Android SDK中的各种API示例代码,帮助开发者深入理解和掌握Android平台的功能特性。本文将针对API Level 19...

    Android 5.1 ApiDemos.apk

    Android 5.1的ApiDemos安装包

    android ApiDemos

    《Android API Demos详解》 Android API Demos是一款由谷歌官方提供的开源项目,它包含了大量Android SDK中的API示例代码,旨在帮助开发者更好地理解和学习如何在实际应用中使用Android的各种功能和API。该项目覆盖...

    ApiDemos.apk

    android6.0 模拟器里提取的, 可以直接安装到手机上使用

    Android ApiDemos2.1

    **Android ApiDemos 2.1 知识点详解** `Android ApiDemos 2.1` 是Android SDK中一个非常重要的示例程序,它包含了Android API的各种功能和组件的演示,是开发者学习和理解Android系统API的重要资源。这个版本对应的...

    Android ApiDemos4.4 示例解析

    最新版ApiDemos Android SDK 中带有很多例子,其中ApiDemo 详细介绍了Android 平台主要API,分成了 · App · Content · Graphics · Media · OS · Text · Views 几个大类,每个大类又分为几个小类,...

    Android(1.5) APIDemos梳理

    《Android(1.5)APIDemos梳理》 在Android开发领域,APIDemos是官方提供的一款用于展示Android API功能的示例应用。这个版本基于Android 1.5,虽然现在已经较旧,但它仍然是理解早期Android系统API工作原理的重要...

Global site tag (gtag.js) - Google Analytics