一分钟定期服务

时间:2012-05-07 13:02:18

标签: android android-service

执行定期任务的正确方法是什么? 我的实现似乎不能正常工作:当屏幕打开并且我正在使用手机时,服务方法会及时运行。然而,当手机被锁定时,该服务以非常大且随机的间隔运行(例如:10:3​​0 10:32 10:45 10:46 10:49 11:00 ......) 这是代码:

主要服务类:

@Override
public void onCreate() {
    pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
    mNM = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
    // Display a notification about us starting.  We put an icon in the status bar.
    showNotification();
    mHandler.postDelayed(periodicTask, ONE_MINUTE); 
}

private Handler mHandler = new Handler();
private static final int ONE_MINUTE = 60000;

private Runnable periodicTask = new Runnable() {

    public void run() {
        try{
            wakelock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "My Tag");    
            wakelock.acquire();
            Log.v("PeriodicTimerService","Awake");
            getValues();
            writeDB();
            writeLog();
            mHandler.postDelayed(periodicTask, ONE_MINUTE);
        }
        finally{
            wakelock.release();
        }
    }
};

1 个答案:

答案 0 :(得分:0)

如果您需要定期任务即使在手机处于休眠状态时也能完全运行,那么您别无选择:必须使用AlarmManager。