好的,所以我得到了这个设置: 一个midlet
Gui extends Midlet{
private static Gui instance;
protected void startApp() {
Display.getDisplay(this).setCurrent(MyForm.getInstance());
}
private static final Logger log = LoggerFactory.getLogger();
public static Datacheck getInstance() {
return instance;
}
public Gui() {
// Configure logging
}
protected void startApp() {
instance = this;
Display.getDisplay(this).setCurrent(MyForm.getInstance());
}
protected void pauseApp() {
}
protected void destroyApp(boolean bool) {
// Shutdown Microlog gracefully
LoggerFactory.shutdown();
notifyDestroyed();
}
public static void log(Level level, String message) {
log.log(level, message);
}
public void requestScreen(Form screen) {
log.info("request screen called");
Display.getDisplay(this).setCurrent(screen);
}
}
表格
MyForm extends Form{
private static MyForm instance;
public static MyForm getInstance() {
if (instance == null) {
instance = new MyForm();
}
return instance;
}
private Form(){
//start task
new Timer().scheduleAtFixedRate(new PollingService(CallsDialog.getInstance()), 0, UPDATE_INTERVAL);
//add gui elements ....
}
private void updateForm() {
//never gets executed
}
}
和一个帖子
MyThread implements Runnable{
private MyForm handle;
public PollingService(MyForm handle) {
this.handle = handle;
}
public void run() {
handle.updateForm();
}
}
所以midlet启动,将其Form设置为MyForm的实例 然后myform创建一个新线程 这个线程应该每隔5秒调用一次myform函数
这是一个非常简单的真实例子,请不要改变线程设计
现在当我从“MyForm”类执行一个方法时 它没有执行 我没有任何错误
谁知道我做错了什么?修改的 已更改,因此没有创建任何线程(已由timertask完成)
答案 0 :(得分:1)
1)您不需要创建单独的Thread来执行TimerTask。 Timer和TimerTask机制已经为每个TimerTask执行创建了新线程。
2)你能提供更现实的代码吗?您的示例中没有MyThread创建,也没有start()调用。有时bug只是缺少方法调用。