android计划任务

时间:2012-04-25 02:11:21

标签: android service scheduled-tasks locationmanager

我有一项任务。

6:00 register locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
                0, 0, locationListener);<br>
19:00 unregister locationManager.removeUpdates(locationListener);

首先,我想使用AlarmManager的服务。但我无法将locationManagerlocationListener从活动发送到服务。

最后,我使用AsyncTaskdoInbackground中创建一个循环以便一直运行。如果时间是6:00或19:00,请注册或取消注册locationManager。

 protected Object doInBackground(Object... params) {
    Calendar calendar = Calendar.getInstance();
    while(flag) {
        calendar.setTimeInMillis(System.currentTimeMillis());
        calendar.set(Calendar.HOUR_OF_DAY, 19);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);

        long now = System.currentTimeMillis();
        if(calendar.getTime().getTime() - now < 1000) {
            publishProgress(new Message(Message.REMOVE_LOCATION_MANAGER));
        }

        calendar.set(Calendar.HOUR_OF_DAY, 6);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        now = System.currentTimeMillis();
        if(calendar.getTime().getTime() - now < 1000) {
            publishProgress(new Message(Message.REGISTER_LOCATION_MANAGER));
        }
    }
    return null;
}
 protected void onProgressUpdate(Object... values) {
    super.onProgressUpdate(values);

    Message msg = (Message)values[0];
    if(msg.type == Message.REMOVE_LOCATION_MANAGER) {
        lm.removeUpdates(ll);
        Toast.makeText(context, "remove locationManager", Toast.LENGTH_SHORT).show();
    }

    if(msg.type == Message.REGISTER_LOCATION_MANAGER) {
        lm.removeUpdates(ll);
        lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,
                0, 0, ll);
        Toast.makeText(context, "register locationManager", Toast.LENGTH_SHORT).show();
    }
}

任何人都有更好的日程安排方法,提前。

1 个答案:

答案 0 :(得分:-1)

没有必要直接回答你的问题,你肯定要重新考虑你的应用程序,因为从早上6点到晚上19点运行GPS时,没有任何Android设备能够在单次电池充电后继续存在。

基本上,只有在您真正需要时才需要GPS位置更新。这是Android Guru Reto Meyer关于获取位置更新的好文章:http://android-developers.blogspot.jp/2011/06/deep-dive-into-location.html