我想自动安排与一个特定的时间间隔一个线程。 我还需要在后台汽车无无挂起的设备来执行这一点。
我曾与应用程序管理器类试过,但它是应用程序的调度,我需要在应用程序内调度线程。
我想自动安排与一个特定的时间间隔一个线程。 我还需要在后台汽车无无挂起的设备来执行这一点。
我曾与应用程序管理器类试过,但它是应用程序的调度,我需要在应用程序内调度线程。
我会用的TimerTask :
public class MyScreen extends MainScreen {
private Timer mTimer;
public MyScreen() {
mTimer = new Timer();
//start after 1 second, repeat every 5 second
mTimer.schedule(mTimerTask, 0, 5000);
}
TimerTask mTimerTask = new TimerTask() {
public void run() {
// some processing here
}
};
}
看到黑莓API隐藏的宝石(第二部分)
使用UiApplication.getUiApplication().invokeLater()
它接受的延迟和重复参数,并会正是你需要的执行。
编辑
我知道这个职位是旧的,但这个是迄今为止最好的选择安排重复事件,我想补充一点,以停止计划的事件,需要执行以下操作:
//Start repeating "runnable" thread every 10 seconds and save the event ID
int eventId = UiApplication.getUiApplication().invokeLater(runnable, 10000, true);
//Cancel the repetition by the saved ID
UiApplication.getUiApplication().cancelInvokeLater(eventId);
假设你希望它运行在设备启动一个线程:创建第二个项目,并列出它作为备用入口点。 在您的UIApplication或应用程序的main(),检查传递给该项目的说法。 做你的周期性的东西那里通过了Thread.sleep,不叫enterEventDispatcher。
搜索“自动启动”: http://docs.blackberry.com/en/developers/deliverables/1076/development.pdf
或者,如果你想要做的事,一旦用户“开始”,然后考虑创建一个新的线程来完成你的时间的东西。 覆盖屏幕的OnClose(),并使用Application.getActivation()。关闭()到屏幕扔进背景。
或者有一个其他的方式做这样的事情一样的invokeLater等可能事件监听器可能会做你需要什么,但你并没有给出很多细节。
只要在应用程序运行-只需创建线程和工作的每一位后打电话了Thread.sleep ,只要你需要它保持休眠状态。
如果你需要在特定的时间醒来 ,而不是仅仅睡了一个特定的时间,那么你可以做类似如下:
Date wakeUpAt = ...; // Get this however
Date now = new Date();
long millisToSleepFor = wakeUpAt.getTime() - now.getTime();
Thread.sleep(millisToSleepFor);