最近在做项目时遇到了 这样的需求 要在一个for循环里执行下载的操作, 而且要等 下载完每个 再去接着走循环。上网查了一些 觉得说的不是很明确。现在把我用到的代码 贴上 希望可以帮到有此需求的开发者 private Handler mHandler = new Handler() {
public void handleMessage(android.os.Message msg) {
switch (msg.what) {http://www.huiyi8.com/tab/
//访问完网络 走此分支 将锁打开
case Constants.DOWN_TEST:
synchronized(object){ object.notifyAll(); }
break;
//访问网络
case Constants.FINISH:
ServerDateUtil.getInstance(context, mHandler,
application).downTestPic(
application.getNoPortURL(context) + test,
FileUtils.getPathOfTest() + "/" + sysID
+ ".jpg", map, happyID);
break;
default:
break;
}
}
};
private Object object = new Object();
@Override
public void run() {tab标签
for (int i = 0; i < application.getLIST().size(); i++) {
synchronized(object){
messageString = TestUtil.getInstance(context, application)
.getMsgByHappyID(application.getLIST().get(i));
happyID = application.getLIST().get(i);
map = ResourceUtil.getMap(messageString);
if (map != null) {
SQLiteDB.single(context).saveData(map);
getMsg(map);
//发送通知 在handler 里执行访问网络的方法
Message message = new Message();
message.what = Constants.FINISH;
mHandler.sendMessage(message);
//执行下面的语句 循环进入等待
try {
object.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}