我總是創建兩個處理程序:一個在主線程上,另一個在單線程上。這是一個完美的方式來停止處理?
這是一個在Activity生命週期中啓動和停止它們的最佳方法嗎?
HandlerThread safeThread = null;
Handler safeHandler = null;
Handler handler = null;
@Override
public void onStart() {
if (safeThread == null) {
safeThread = new HandlerThread("safeThread");
safeThread.start();
safeHandler = new Handler(safeThread.getLooper());
} else if (safeThread.getState() == Thread.State.NEW) {
safeThread.start();
safeHandler = new Handler(safeThread.getLooper());
} else if (safeThread.getState() == Thread.State.WAITING) {
safeHandler = new Handler(safeThread.getLooper());
} else if (safeThread.getState() == Thread.State.TERMINATED) {
safeThread = null;
safeThread = new HandlerThread("safeThread");
safeThread.start();
safeHandler = new Handler(safeThread.getLooper());
}
}
protected void onStop() {
Log.d("x", "onStop is executed");
safeHandler = null;
safeThread.quit();
safeThread.interrupt();
safeThread = null;
super.onStop();
}
safeThread.interrupt();是最好的方式來停止線程 – Sameer 2012-01-18 09:22:48
是的,我知道但我想這是安全的,當我中斷後,並null。 – rex 2012-01-18 09:37:04
我已經給出了答案..一件事我建議你,因爲你是新的在stackoverflow.IF你想欣賞某人的幫助,然後給他一票,如果你認爲答案是最好的然後將其標記爲答案.. :)歡迎和歡呼 – Sameer 2012-01-18 09:42:27