我对ScheduledExecutorService有一些问题。 我想在一段时间后开始通知。在这种情况下它10秒。但是10秒后它就没有开始。除此之外的所有功能都正常工作
以下是代码:
ScheduledExecutorService scheduler =
Executors.newSingleThreadScheduledExecutor();
scheduler.schedule(new Runnable() {
public void run() {
Toast.makeText(BService.this, "It works", Toast.LENGTH_SHORT).show();
// Display a notification about us starting. We put an icon in the status bar.
showNotification();
}
}, 10, TimeUnit.SECONDS);
感谢您的帮助 ROA
答案 0 :(得分:4)
我遇到了同样的问题而且我发现了原因。 在UI线程上没有调用run(),而Toast崩溃了该线程(但由于某些未知原因,它没有在LogCat上提供任何内容)。
但如果你这样做:
task.schedule(new Runnable() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
// your Toas goes in here
}
});
}
}, DURATION, TimeUnit.MILLISECONDS);
它会起作用!
答案 1 :(得分:0)
ScheduledExecutorService.schedule()
被正确调用,因此我猜你的run()
因某种原因出错了。您可以在run()
开头添加日志,以检查它是否已启动。