我的目的是创建一个应用程序,每隔几分钟跟踪我的Android手机的移动并将其发送到我的服务器。我已经在线阅读了很多关于如何使用服务,AlarmManager和Partial_WakeLock的信息。我也经历了github.com上的commonsware示例,但我有点困惑,因为我仍然没有在android中经验丰富。
我成功地将我的应用程序[获取位置并将其发送到我的服务器]。如何让我的服务每隔几分钟唤醒并做[提到的工作]?在commonsware的Wakeful示例中,我在哪种方法中提到我的[work]以及在哪种方法中我一直在调用它?
答案 0 :(得分:7)
您需要Service
和AlarmManager
。您的服务将处理获取职位并将其发布到服务器,AlarmManager
将根据您决定的时间间隔调用您的服务。您应该使用Service
或onCreate
或其他您想要的地方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)被解析时,系统将调用下一行代码,但问题是我看到可能需要任务的无限循环杀死行动,或者只是让系统崩溃。