如何解决是否使用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 举报,一经查实,本站将立刻删除。