[英]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
}
};
}
使用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.