• Android中设置定时器


      Android中设置定时器目前来看有两种方法,一种是基于handler的postDelayed方法,另一种是使用AlarmManager类。根据Android官方的描述

    Note: The Alarm Manager is intended for cases where you want to have your application code run at a specific time, even if your application is not currently running. For normal timing operations (ticks, timeouts, etc) it is easier and much more efficient to use Handler.

      也就是说使用第一种handler方法相对简单,在一个应用中定时执行任务的话,使用handler方法比较方便,并且由于是在同一个类中,类的一些变量值都可以在需要定时执行的任务中直接获得。而使用alarm manager的主要场合是在定期唤醒一些系统中本来没有打开的,或者其他的应用。

    1.基于handler的postDelayed方法

    private Handler handler = new Handler();
    
    private Runnable runnable = new Runnable() 
    {
    
        public void run() 
        {
             // Do the stuff
             handler.postDelayed(this, 1000);
        }
    };
    runnable.run();

    通过handler.removeCallbacks(runnable)停止定时执行任务。

    http://stackoverflow.com/a/11640073/17678002.

    2.基于AlarmManager的方法

      在Android的API demo中提供了alarmservice使用的详细的例子,在模拟器中可以直接看到apidemo的例子。在eclipse中可以直接导入sdk/samples目录下的ApiDemos工程。如果sdk下没有samples目录,可以通过Android sdk Manager来安装Samples for SDK.

     


      apidemo中和alarm相关的页面如上面三个图所示。图中最上面显示的是activity所在ApiDemos整个应用中的路径。和alarm相关的都在App/Alarm路径下,一共有两个activity,一个是Alarm Controller,一个是Alarm Service。Alarm Controller展示的是通过AlarmManager实现指定未来某个时间执行一项功能、定时执行的设置与清除这三项功能。Alarm Service展示的是通过AlarmManager实现定时打开service的设置于清楚的两项功能。

      通过alarm关键字进行搜索,可以发现ApiDemos工程中所有的和alarm相关的类如上图所示。一共有5个类。其中AlarmController.java,AlarmService.java对应主的Activity和AlarmManager的设置。AlarmService_Service.java是AlarmService.java定时唤醒功能所对应的service类。

    http://developer.android.com/reference/android/app/AlarmManager.html

  • 相关阅读:
    POJ 2159 Ancient Cipher 难度:0
    POJ 3299 Humidex 难度:0
    POJ 1503 Integer Inquiry 大数 难度:0
    POJ 2262 Goldbach's Conjecture 数学常识 难度:0
    POJ 1083 Moving Tables 思路 难度:0
    PAT 甲级 1126 Eulerian Path
    Java 大数运算
    PAT 甲级 1010 Radix
    PAT 甲级 1137 Final Grading
    PAT 甲级 1064 Complete Binary Search Tree
  • 原文地址:https://www.cnblogs.com/jiangz/p/3130636.html
Copyright © 2020-2023  润新知