我怎么可以安排在黑莓特定线程(How can I schedule a particular thr

2019-09-02 05:01发布

我想自动安排与一个特定的时间间隔一个线程。 我还需要在后台汽车无无挂起的设备来执行这一点。

我曾与应用程序管理器类试过,但它是应用程序的调度,我需要在应用程序内调度线程。

Answer 1:

我会用的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隐藏的宝石(第二部分)



Answer 2:

使用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);


Answer 3:

假设你希望它运行在设备启动一个线程:创建第二个项目,并列出它作为备用入口点。 在您的UIApplication或应用程序的main(),检查传递给该项目的说法。 做你的周期性的东西那里通过了Thread.sleep,不叫enterEventDispatcher。

搜索“自动启动”: http://docs.blackberry.com/en/developers/deliverables/1076/development.pdf

或者,如果你想要做的事,一旦用户“开始”,然后考虑创建一个新的线程来完成你的时间的东西。 覆盖屏幕的OnClose(),并使用Application.getActivation()。关闭()到屏幕扔进背景。

或者有一个其他的方式做这样的事情一样的invokeLater等可能事件监听器可能会做你需要什么,但你并没有给出很多细节。



Answer 4:

只要在应用程序运行-只需创建线程和工作的每一位后打电话了Thread.sleep ,只要你需要它保持休眠状态。

如果你需要在特定的时间醒来 ,而不是仅仅睡了一个特定的时间,那么你可以做类似如下:

Date wakeUpAt = ...; // Get this however
Date now = new Date();
long millisToSleepFor = wakeUpAt.getTime() - now.getTime();
Thread.sleep(millisToSleepFor);


文章来源: How can I schedule a particular thread in Blackberry