Java 如何在我的服务中高效地安排任务?
我有一个收集数据的服务,该服务每小时都需要将这些数据发送到我的服务器。我知道他们有很多解决方案可用于安排任务,但在我的情况下,在电池消耗和资源利用方面,什么是最有效的Java 如何在我的服务中高效地安排任务?,java,android,alarmmanager,battery,network-connection,Java,Android,Alarmmanager,Battery,Network Connection,我有一个收集数据的服务,该服务每小时都需要将这些数据发送到我的服务器。我知道他们有很多解决方案可用于安排任务,但在我的情况下,在电池消耗和资源利用方面,什么是最有效的 此外,我的服务也可以停止,当我的服务停止时,它不能再发送任何数据(因此alarmmanager seam不是最好的方法,因为据我所知,它将重新启动我的服务)通过AlaramManager进行计划非常好,因为您也可以取消计划的任务 它可能看起来像这样 AlarmManager alarm = (AlarmManager) getS
此外,我的服务也可以停止,当我的服务停止时,它不能再发送任何数据(因此alarmmanager seam不是最好的方法,因为据我所知,它将重新启动我的服务)通过
AlaramManager
进行计划非常好,因为您也可以取消计划的任务
它可能看起来像这样
AlarmManager alarm = (AlarmManager) getSystemService(ALARM_SERVICE);
Intent intent = new Intent(getApplicationContext(), YourService.class);
alarm.set(
AlarmManager.RTC_WAKEUP,
System.currentTimeMillis() + DateUtils.HOUR_IN_MILLIS,
PendingIntent.getService(getApplicationContext(), 11, intent, PendingIntent.FLAG_UPDATE_CURRENT)
);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent myIntent = new Intent(getApplicationContext(), YourService.class);
PendingIntent pendingIntent = PendingIntent.getService(getApplicationContext(), 11, myIntent, PendingIntent.FLAG_UPDATE_CURRENT);
alarmManager.cancel(pendingIntent);
取消它可以这样做
AlarmManager alarm = (AlarmManager) getSystemService(ALARM_SERVICE);
Intent intent = new Intent(getApplicationContext(), YourService.class);
alarm.set(
AlarmManager.RTC_WAKEUP,
System.currentTimeMillis() + DateUtils.HOUR_IN_MILLIS,
PendingIntent.getService(getApplicationContext(), 11, intent, PendingIntent.FLAG_UPDATE_CURRENT)
);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent myIntent = new Intent(getApplicationContext(), YourService.class);
PendingIntent pendingIntent = PendingIntent.getService(getApplicationContext(), 11, myIntent, PendingIntent.FLAG_UPDATE_CURRENT);
alarmManager.cancel(pendingIntent);
11
是pendingent
的标识符,您可以在其中访问它 仅使用报警管理器是不够的
您应该在网络连接已处于使用状态时发送数据,因为将WiFi或3G/4G无线电从“空闲/未使用”切换到“数据发送/接收”非常耗电。如果设备已经在发送/接收数据,则您没有额外的能源成本来激活收音机
您可以注册一个广播接收器,通知您的应用程序当前的网络状态
有关更多详细信息,请参阅
- 报警管理器
- 设备当前是否正在充电(因此电池目前并不重要)
- 收音机当前处于活动状态吗