Schedule Executor的Schedule方法只执行一次

时间:2017-04-07 10:18:46

标签: android scheduledexecutorservice

我正在尝试实施一个示例计划,我希望每隔10秒显示一次toast。但是计划方法只运行一次。是否有任何解决方案。 这是我的代码

公共类MainActivity扩展了AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ScheduledExecutorService scheduledExecutorService= Executors.newScheduledThreadPool(1);
    scheduledExecutorService.schedule(new Runnable() {
        @Override
        public void run() {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    Toast.makeText(getApplicationContext(), "Hello Schedule", Toast.LENGTH_LONG).show();
                }
            });
        }
    },
    10, TimeUnit.SECONDS);

}

}

2 个答案:

答案 0 :(得分:0)

阅读有关ScheduledExecutorService#schedule()ScheduledExecutorService#scheduleAt*

之间差异的文档

答案 1 :(得分:0)

您应该寻找 scheduleAtFixedRate 方法。

  

scheduleAtFixedRate:   创建并执行首先启用的定期操作   在给定的初始延迟之后,以及随后的给定时期;   也就是说,执行将在initialDelay之后开始   initialDelay + period,然后是initialDelay + 2 * period,依此类推。   Documentaion

示例

ScheduledExecutorService scheduledExecutorService;
    scheduledExecutorService = Executors.newScheduledThreadPool(1);
    scheduledExecutorService.scheduleAtFixedRate(new Runnable() {
        @Override
        public void run() {
            Toast.makeText(getApplicationContext(),"Hello Schedule",Toast.LENGTH_LONG).show();
        }},2,10,TimeUnit.SECONDS);