簡體   English   中英

如何在Blackberry中安排特定線程

[英]How can I schedule a particular thread in Blackberry

我想自動安排具有特定時間間隔的線程。 我還需要在后台連續執行此操作而不會掛起設備。

我已經嘗試使用Application Manager Class,但是它用於應用程序調度,我需要在應用程序中安排線程。

我會使用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
        }
    };
}

BlackBerry API Hidden Gems(第二部分)

使用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或Application main()中,檢查傳遞給項目的參數。 通過Thread.sleep在那里做周期性的東西,不要調用enterEventDispatcher。

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

或者,如果您想在用戶“啟動”它時執行某些操作,那么請考慮創建一個新線程來執行您的計時工作。 覆蓋屏幕的onClose()並使用Application.getActivation()。deactivate()將屏幕投射到背景中。

或者還有其他方法可以像invokeLater那樣做這樣的事情。也許eventlisteners可能會做你需要的,但你沒有提供很多細節。

只要應用程序正在運行 - 只需創建線程,並在每次工作后調用Thread.sleep ,只要您需要它保持休眠狀態。

如果你需要在特定的時間醒來 ,而不是僅僅睡了一個特定的時間,那么你可以做類似如下:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM