我正在开发一个应用程序,该应用程序应该每隔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秒运行一次,同时以随机方式运行服务
对于重复的工作,android提供了简单的api,称为Timer,请查看它。使用非常简单。
不要使用Timer Class,而是使用AlamrManager类。它还执行您想要的相同重复任务。AlamrManager重量轻,即使您的设备处于睡眠模式,它也可以运行。
另请参阅此链接Android:如何使用AlrmManager重复服务
如何在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)中,它将每10秒由AlrmManager发送的PendingIntent调用一次。
附言:更新你的货单
希望它有所帮助
正如标题所说,我正在尝试使用排定注释的fixedRate参数,以便每秒调用一个函数。下面是我正在使用的代码: 按照我的理解,在打印第一个“结束线程”之前,函数应该打印五次“开始线程”。 问题是函数先打印“开始线程”然后等待5.5秒,打印“结束线程”,然后走“开始线程”,以此类推……看起来调度程序在启动新的执行之前等待前一个执行完成,但fixedRate属性不应该是这种情况。 我仔细阅读了一下,发现
我想修复Android中相机预览的帧率,即20fps或30fps。但是,我们发现帧率不稳定。 在android文档中,据说帧率在getSupport dPreviewFpsRange中定义的最小帧率和最大帧率之间波动。https://developer.android.com/reference/android/hardware/Camera.Parameters.html#getSupporte
问题内容: 我正在学习Android编程的基础知识。 我有一个简单的android测试应用程序,其中将加速度计,磁力计和方向数据记录到一个外部文件中,同时也将其显示出来。我通过调用方法 initLogger* ,单击“ 开始” 按钮(相关传感器的registerListener)来启动日志记录过程。 * 看起来与此类似… 还有一个“停止”按钮,它将停止日志记录过程(最后通过为每个传感器调用unre
这是我需要解决的问题。 创建包含输入表单的基本网页。JavaScript将嵌入到HTML文档中。 输入表格应包括: 用户名字段订单数量输入字段物料价格只读字段–订单总成本“提交按钮”的值设置为5.31只读字段,不使用任何类型的表单按钮元素用户应能够输入其名称和订单数量,然后单击“提交”。单击“提交”时,表单将计算订单总额,包括8.25%的销售税。计算后,订单总额表单字段将更新为总额,包括美元符号和
问题内容: 我想每隔5秒重复调用一次方法,每当我希望停止该方法的重复调用时,我可能会停止或重新启动该方法的重复调用。 这是一些我真正想要实现的示例代码。在这方面请帮助我,我将非常感谢您。 问题答案: 使用以下命令设置重复任务: 如果您想取消任务,只需调用这里就是您的对象 并且您还可以检查答案下方的评论,他们已经提供了有关此内容的简短信息。
问题内容: 问题: 我有一个要求以固定速率调用dao方法(例如每10秒调用一次),然后我需要检查结果是否有效(如果存在),否则请每隔10秒继续调用该方法,直到获得有效结果或已定义超时(例如2分钟)结束了。 方法: 我想将任务和调度程序逻辑分开,并以一种可以被具有相似要求的不同类使用的方式编写任务。 我能想到的一种方法是定义一个新的轮询器任务 用户只需简单地提供task和isValid的实现; 然后