gpt4 book ai didi

android - 如何安排android服务以固定速率执行

转载 作者:行者123 更新时间:2023-11-29 21:19:09 26 4
gpt4 key购买 nike

我正在开发一个应用程序,它应该每 X 秒从网络下载一个文件以检查是否有任何更改,我使用一个服务来做到这一点,但它的执行不是固定的延迟时间率,这是我的代码对于服务:


@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Toast.makeText(this, "service starting", Toast.LENGTH_SHORT).show();
checkUpdate();
return START_STICKY;
}

private Void checkUpdate() {
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
Log.i("Service", String.valueOf(++counter));
if(Helper.isNetworkAvailable(getBaseContext())) {
// download file
} else {
Log.e("ServiceHandler", "Couldn't get any data from the url");
}
}else {
Log.e("Connection", "No connection");
}
}
}, 10000, 10000);
return null;
}

输出不固定,它应该每 10 秒运行一次,同时以随机方式运行服务

最佳答案

如何在 IntentService 中设置一个 AlarmManager?准确得多。

 Intent intent = new Intent(context, YourClass.class);
PendingIntent pi = PendingIntent.getService(context, 0, intent, 0);
AlarmManager am = (AlarmManager) c.getSystemService(Context.ALARM_SERVICE);
am.setRepeating(AlarmManager.RTC, System.currentTimeMillis(), 10*1000, pi);

确保在 YourClass.class(这是一个 IntentService)中,将您的逻辑放在 handleIntent(Intent intent)中,AlarmManager 发送的 PendingIntent 将每 10 秒调用一次。

附言更新 list

希望对你有帮助

关于android - 如何安排android服务以固定速率执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20948755/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com