问题描述
我正在尝试调用方法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 (将#修改为@)