導航:首頁 > 操作系統 > androidtimerwait

androidtimerwait

發布時間:2022-10-08 06:58:41

『壹』 一個android Timer,為什麼只執行了一次

public void getPaisong() {
final Handler handler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case 1: {
// 初始化搜索模塊,注冊事件監聽
mSearch = new MKSearch();
mSearch.init(app.mBMapMan, new MyMKSearchListener());
jiexi();
cou++;
Toast.makeText(
BMapApiDemoApp.mDemoApp.getApplicationContext(),
"執行了"+cou+"一次!", Toast.LENGTH_LONG).show();
}
break;
}
super.handleMessage(msg);
}
};
TimerTask task = new TimerTask() {
public void run() {
Message message = new Message();
message.what = 1;
handler.sendMessage(message);
}
};

timer = new Timer(true);
timer.schele(task, 5000); // 延時1000ms後執行,1000ms執行一次
// timer.cancel(); //退出計時器
}
我在oncreate方法里直接調用了getPaisong()方法,可是只顯示cou=1

『貳』 android中怎麼讓線程長時間休眠線程休眠最長的安全時間是多少

設定一個Timer對象,時間到後觸發事件再給handler發消息處理就行,處理完重置timer的時間進入下一個循環即可。隨便用wait之類的土辦法的話很容易被系統判定為進程掛死然後被kill掉的。

『叄』 Android怎麼正確使用wait和notify方法

synchronized(obj) {
while(!condition) {
obj.wait();
}
obj.doSomething();
}
當線程A獲得了obj鎖後,發現條件condition不滿足,無法繼續下一處理,於是線程A就wait() , 放棄對象鎖.
之後在另一線程B中,如果B更改了某些條件,使得線程A的condition條件滿足了,就可以喚醒線程A:
synchronized(obj) {
condition = true;
obj.notify();
}
需要注意的概念是:
# 調用obj的wait(), notify()方法前,必須獲得obj鎖,也就是必須寫在synchronized(obj) {…} 代碼段內。
# 調用obj.wait()後,線程A就釋放了obj的鎖,否則線程B無法獲得obj鎖,也就無法在synchronized(obj) {…} 代碼段內喚醒A。
# 當obj.wait()方法返回後,線程A需要再次獲得obj鎖,才能繼續執行。
# 如果A1,A2,A3都在obj.wait(),則B調用obj.notify()只能喚醒A1,A2,A3中的一個(具體哪一個由JVM決定)。
# obj.notifyAll()則能全部喚醒A1,A2,A3,但是要繼續執行obj.wait()的下一條語句,必須獲得obj鎖,因此,A1,A2,A3隻有一個有機會獲得鎖繼續執行,例如A1,其餘的需要等待A1釋放obj鎖之後才能繼續執行。
# 當B調用obj.notify/notifyAll的時候,B正持有obj鎖,因此,A1,A2,A3雖被喚醒,但是仍無法獲得obj鎖。直到B退出synchronized塊,釋放obj鎖後,A1,A2,A3中的一個才有機會獲得鎖繼續執行

『肆』 android用timer做定時任務,崩潰的原因

在做定時任務的時候,有的同學可能能會用到Timer這個定時任務的輔助類,
但是使用它會有潛在的風險,風險如下,
(1)時間計算不準確問題
因為Timer是以絕對時間計算定時任務的,會受到系統時間的影響,如果在任務執行期間,更改了系統時間,那麼會
導致時間計算不準確問題,導致任務沒用按找預定的時間執行。
(2)只能單任務執行
簡單講就是,只能一次執行一個任務,如果前一個任務沒有執行完成,後一個任務是無法並行執行的,只能等待前一個任務執行完成
才能執行。也有可能會出現這樣的結果,前一個任務執行的時間太長,後幾個任務時間短,可能在一個時間段內執行了多個任務,任務又
沒有按照我們要執行的時間執行。
(3)非檢查異常導致非同步任務終止
Timer當在執行的過程中遇到非檢查異常的時候,會導致本次任務失敗,並且接下來的任務也無法被執行,Timer將會終止執行,這不是
我們要的結果,我們需要一套恢復機制。

java5以後可以用下面的這個類來替代Time,並且解決了以上三個問題
java.util.concurrent.ScheledThreadPoolExecutor

那麼在Android上呢,可以用 java.util.concurrent.ScheledThreadPoolExecutor,也可以用Handler機製做,
但是不建議使用Timer

『伍』 求教為什麼Android Timer在後台運行,開始正常,但每次都不定時的突然結束了跪求,謝謝

應該是系統的內存的問題。

閱讀全文

與androidtimerwait相關的資料

熱點內容
伺服器軟路由怎麼做 瀏覽:289
冰箱壓縮機出口 瀏覽:225
OPT最佳頁面置換演算法 瀏覽:642
網盤忘記解壓碼怎麼辦 瀏覽:852
文件加密看不到裡面的內容 瀏覽:651
程序員腦子里都想什麼 瀏覽:430
oppp手機信任app在哪裡設置 瀏覽:185
java地址重定向 瀏覽:268
一年級下冊摘蘋果的演算法是怎樣的 瀏覽:448
程序員出軌電視劇 瀏覽:88
伺服器系統地址怎麼查 瀏覽:54
解壓游戲發行官 瀏覽:601
國外小伙解壓實驗 瀏覽:336
頂級大學開設加密貨幣 瀏覽:437
java重載與多態 瀏覽:528
騰訊應屆程序員 瀏覽:942
一鍵編譯程序 瀏覽:129
語音加密包哪個好 瀏覽:341
有什麼學習高中語文的app 瀏覽:283
安卓手機的表格里怎麼打勾 瀏覽:411