我的意图是制作一个应用程序,每隔几分钟跟踪我的android手机的移动,并将其发送到我的服务器。我在网上读了很多关于如何使用AlarmManager和Partial_WakeLock服务的文章。我也浏览了github.com中的commonsware示例,但我有点困惑,因为我仍然没有使用android的经验。
我已经成功地将我的应用程序发送到[获取位置并将其发送到我的服务器]。我如何让我的服务每隔几分钟醒来一次,然后做[提到的工作]?在commonsware的Wakeful示例中,我在哪种方法中提到我的[工作],在哪种方式中我一直调用它?
您需要Service
和AlarmManager
。您的服务将处理获取职位并将其发布到服务器,AlarmManager
将根据您决定的时间间隔调用您的服务。您应该在onCreate
或您想要的其他地方用Service
初始化AlarmManager,大致如下:
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);
YourAlarmReceiver将启动您的服务
public class YourAlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
context.startService(new Intent(context, YourService.class));
}
}
关于如何使用服务,请参阅android网站http://developer.android.com/guide/topics/fundamentals/services.html
您可以使用带有sleep(X)的部分wakeLock,当sleep(X)得到解决时,系统将调用下一行代码,但问题是我看到了一个可能的无限循环,可能需要任务终止操作,或者只是使系统崩溃。