1
我試圖用Handler來做到這一點,但我的Handler想要是靜態的,所以我不能使用startThread
方法。線程服務。如何在延遲後重新啓動一些線程?
這是處理器
private class ServiceHandler extends Handler {
@Override
public void handleMessage(Message msg) {
Integer tmp = msg.what;
Log.d(Tag, tmp.toString());
switch (msg.what) {
case THREAD_SYNC_START:
startSyncThread();
break;
case THREAD_SYNC_STOP:
mSyncThread.interrupt();
break;
default:
break;
}
}
}
這是我服務的啓動線程
private void startSyncThread() {
if (mSyncThread != null) mSyncThread.interrupt();
mSyncThread = new SyncThread();
mSyncThread.start();
}
主題發送消息到處理器
mServiceHandler.sendEmptyMessageDelayed(THREAD_SYNC_START, 2000);
我不需要任何泄漏的方法,所以我正在尋找正確的方式去完成這項任務。
爲什麼你想建立自己的處理程序? AsyncTask不適合您的需求嗎? – 2013-03-07 13:51:17
@SimonZettervall如何在達賴之後重新啓動AsyncTask?在我的情況下,「**線程**發送_Message_到**處理程序**」 - >「**處理程序**重新啓動**線程**」 – kemmotar 2013-03-07 13:56:08
這是由您來「重新啓動」。線程中沒有這樣的事情。您可以啓動新線程,暫停線程或停止/結束線程。簡歷操作取決於您的代碼。當線程停止時(應用程序暫停),您必須存儲迄今爲止計算的數據。開始時,您將該數據再次傳遞給線程。而且你的算法必須跳過已處理過的部分,以便從上次停止時的點繼續。 – Pihhan 2013-03-07 14:04:34