如何以特定的时间间隔唤醒我的Android应用程序?

时间:2012-02-11 23:46:12

标签: android service commonsware

我的目的是创建一个应用程序,每隔几分钟跟踪我的Android手机的移动并将其发送到我的服务器。我已经在线阅读了很多关于如何使用服务,AlarmManager和Partial_WakeLock的信息。我也经历了github.com上的commonsware示例,但我有点困惑,因为我仍然没有在android中经验丰富。

我成功地将我的应用程序[获取位置并将其发送到我的服务器]。如何让我的服务每隔几分钟唤醒并做[提到的工作]?在commonsware的Wakeful示例中,我在哪种方法中提到我的[work]以及在哪种方法中我一直在调用它?

2 个答案:

答案 0 :(得分:7)

您需要ServiceAlarmManager。您的服务将处理获取职位并将其发布到服务器,AlarmManager将根据您决定的时间间隔调用您的服务。您应该使用ServiceonCreate或其他您想要的地方AlarmManager alarmMgr = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE); PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, new Intent(this, YourAlarmReceiver.class),PendingIntent.FLAG_CANCEL_CURRENT); // Use inexact repeating which is easier on battery (system can phase events and not wake at exact times) alarmMgr.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, YOUR_ALARM_TRIGGER_AT_TIME,YOUR_ALARM_INTERVAL, pendingIntent); 初始化AlarmManager:

public class YourAlarmReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
          context.startService(new Intent(context, YourService.class));
    }
}

YourAlarmReceiver将开始您的服务

{{1}}

关于如何使用服务请参阅Android网站http://developer.android.com/guide/topics/fundamentals/services.html

答案 1 :(得分:0)

你可以使用睡眠(X)的部分wakeLock,当睡眠(x)被解析时,系统将调用下一行代码,但问题是我看到可能需要任务的无限循环杀死行动,或者只是让系统崩溃。