【发布时间】:2018-11-18 00:53:28
【问题描述】:
我正在开发一个加速度计应用程序。我的应用程序正在本地存储(即用户的智能手机)上保存数据。我想将它发送到服务器,但我想每周发送一次。有没有什么功能可以一周后自动发送数据。
我正在为此使用 Android Studio。抱歉,我是新手,请帮忙。
谢谢。
【问题讨论】:
标签: android post server accelerometer
我正在开发一个加速度计应用程序。我的应用程序正在本地存储(即用户的智能手机)上保存数据。我想将它发送到服务器,但我想每周发送一次。有没有什么功能可以一周后自动发送数据。
我正在为此使用 Android Studio。抱歉,我是新手,请帮忙。
谢谢。
【问题讨论】:
标签: android post server accelerometer
您使用WorkManager 架构组件来实现它。按如下方式安排PeriodicWorkRequest:
创建 Worker 类:
public class MyWorker extends Worker {
@Override
public Worker.WorkerResult doWork() {
// Send your data to server
// Indicate success or failure with your return value:
return WorkerResult.SUCCESS;
// (Returning RETRY tells WorkManager to try this task again
// later; FAILURE says not to try again.)
}
}
安排工作:
PeriodicWorkRequest periodicWork = new
PeriodicWorkRequest.Builder(MyWorker.class, 7, TimeUnit.DAYS)
.build();
WorkManager.getInstance().enqueue(periodicWork);
这会创建一个 PeriodicWorkRequest 以每 7 天定期运行一次。您还可以设置一些额外的约束,例如仅在 Internet 连接可用时才执行此任务。这将在 7 天内执行一次任务,并且仅当设备具有互联网连接时。
【讨论】:
Then do we have to wait seven days? 否。PeriodicWorkRequest 保证在此时间间隔内只运行一次(受限制)。只要当时满足其他条件,它就可以立即运行,也可以在周期结束时运行,也可以在两者之间的任何时间运行。
你应该试试AlarmManager
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, Seconds, AlarmManager.INTERVAL_DAY * 7, pendingIntent);
另外,创建接收pendingIntent的BroadcastReceiver,如果您有任何问题,请在下方评论
【讨论】: