}private final Handler mHandler = new Handler() { public void handleMessage(Message msg) { switch (msg.what){ case MSG_THEME_APPLY_END: dismissDialog(ID_DIALOG_UNZIPING); handleThemeApplyResult(); case INIT_DEC_GRIDVIEW: InitDescGridView(); break; } }
t.start();t.join...
这要另起一个线程作甚?
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.concurrent.TimeUnit;public class Test {public static void main(String[] args) throws Exception{
List<Task> list = new ArrayList<Task>();
Task temp = null;
for (int i = 0; i < 4; i++) {
temp = new Task(i * 2, "第" + i + "线程");
list.add(temp);
temp.start();
}
while (!list.isEmpty()) {
Iterator<Task> iterator = list.iterator();
while (iterator.hasNext()) {
temp = iterator.next();
if (!temp.isAlive()) {
iterator.remove();
}
}
TimeUnit.SECONDS.sleep(1);
}System.out.println("所有任务执行完毕开始跳转");
}
}class Task extends Thread {
private int sleepTime;
private String threadName;public Task(int sleepTime, String threadName) {
this.sleepTime = sleepTime;
this.threadName = threadName;
}@Override
public void run() {
try {
TimeUnit.SECONDS.sleep(sleepTime);
System.out.println(threadName + "线程休眠" + sleepTime + "秒后结束执行");
} catch (Exception e) {
e.printStackTrace();
}
}
}
1、如1楼所说,等待该线程运行完毕,用 join();
2、定期检查该线程是否运行完毕,用 isAlive();
3、线程运行结束时,用消息(或者说事件)来通知协作线程,可以进行后续动作。
第三种方法 你看看
if(mIsDecGridView && mIsEnd)
{
Message msg = new Message();
msg.what = INIT_DEC_GRIDVIEW;
mHandler.sendMessage(msg);
}private final Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what){
case MSG_THEME_APPLY_END:
dismissDialog(ID_DIALOG_UNZIPING);
handleThemeApplyResult();
case INIT_DEC_GRIDVIEW:
InitDescGridView();
break;
}
}