是否使用ScheduledExecutorService时的输出不同[已解决]

问题描述

我正在尝试调用方法reset()以重置所有变量,UI可见性元素等。该方法有效,而且非常简单:

private void reset() {

    ((MainActivity) m_activity).stop();
}

代码所示,该方法MainActivity的一部分,并且被另一个调用。到现在为止还挺好。不过,我想在5秒钟后调用方法,因此我创建了一个scheduledexecutorservice要执行的

    private void reset() {
    Thread th_stop = new Thread(new Runnable() {
        @Override
        public void run() {
            ((MainActivity) m_activity).stop();
            //Thread.currentThread().interrupt();
        }
    });

    scheduledexecutorservice executor = Executors.newSingleThreadScheduledExecutor();
    executor.schedule(th_stop,5,TimeUnit.SECONDS);
    executor.shutdown();
}

真正让我烦恼的是,我第一次调用执行程序,但是第二次却是随机的(UI的某些元素没有被隐藏等)。如前所述,通过不实现scheduledexecutorservice输出独立于执行多少次是正确的。

有时候,在控制台中会提示以下错误

2020-11-06 12:17:56.541 2175-2616 / com.google.android.gms.persistent E / ModuleIdSetter:设置模块ID时发生异常 java.lang.IllegalStateException:无法在使用非模块上下文创建的ModuleManager中获取当前模块信息

请注意,该应用程序不会崩溃,但不会设置所有UI元素的可见性。

解决

解决该问题,我创建了一个handler而不是ScheduleExecutorService

        new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            ((MainActivity) m_activity).stop();
        }
    },4000);

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)