我正在开发一个Android应用程序,我需要每分钟运行一段代码,当我说每分钟我的意思是它应该与设备的时间同步,所以每次设备时间改变一分钟我的代码是执行。
到目前为止,我尝试了这个,但它无效:
runnable=new Runnable(){
@Override
public void run(){
long now=SystemClock.uptimeMillis();
long next=now+(60000 - now % 60000);
handler.postAtTime(this, next);
}
};
runnable.run();
答案 0 :(得分:7)
还有很多其他方法可以做到这一点:
1)Timer.scheduleAtFixedRate()
2)Thread.sleep(间隔)
3)警报管理器
以你的方式看起来像这样:
ERROR: no such package 'tensorflow/tensorflow/examples/android': BUILD file not found on package path.
您可以看到此fillna
了解详情
答案 1 :(得分:3)
您可以使用此代码:
Thread thread = new Thread(new Runnable()
{
int lastMinute;
int currentMinute;
@Override
public void run()
{
lastMinute = currentMinute;
while (true)
{
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
currentMinute = calendar.get(Calendar.MINUTE);
if (currentMinute != lastMinute){
lastMinute = currentMinute;
Log.v("LOG", "your code here");
}
}
}
});
thread.run();
答案 2 :(得分:1)
可以使用句柄,并且可以以毫秒为单位输入,我们可以每分钟调用一次代码,并且在使用两种不同的布局时不应使用任何无限循环
final Handler handler = new Handler();
Runnable run = new Runnable() {
@Override
public void run() {
handler.postDelayed(this, 60000);
}
};
handler.post(run);
答案 3 :(得分:0)
如果您想每隔X秒启动一次,就可以使用处理程序。处理程序很好,因为您在触发事件时不需要额外的线程来跟踪。这是一个代码:
private final static int INTERVAL = 1000 * 60 * 1; //1 minutes
Handler mHandler = new Handler();
Runnable mHandlerTask = new Runnable()
{
@Override
public void run() {
doSomething();
mHandler.postDelayed(mHandlerTask, INTERVAL);
}
};
void startRepeatingTask()
{
mHandlerTask.run();
}
void stopRepeatingTask()
{
mHandler.removeCallbacks(mHandlerTask);
}
答案 4 :(得分:-1)
现代方法
new Handler().postDelayed(() -> {
}, 30000);