HashMap存储的使用
2015-05-28 23:03
405 查看
最近做一个项目里面要用的socket协议,向服务器发送请求获取返回值,这块要涉及到异步任务处理,一般发送的时候不会只发送一个请求(int cmd),我这块用的是Handler传值的,有一个请求,我就会有一个handler与之对应,所以后来想到了用HashMap<Integer, List<Handler>> msgHandlerMap来处理这些命令和线程。
map里面添加数据:(int cmd, Handler handler)
if(msgHandlerMap.containsKey(cmd)){
List<Handler> list = msgHandlerMap.get(cmd);
if(list == null){
list = new ArrayList<Handler>();
if(!list.contains(handler)){
list.add(handler);
}
}
}else{
List<Handler> lstHandler = new ArrayList<Handler>();
lstHandler.add(handler);
msgHandlerMap.put(command, lstHandler);
}
map里面删除数据:(int cmd, Handler handler)
List<Handler> lstHandler = msgHandlerMap.get(command);
if(lstHandler!=null)
lstHandler.remove(handler);
map遍历通过handler发送消息:
Iterator iterator = msgHandlerMap.keySet().iterator();
while (iterator.hasNext()) {
Integer cmdResponse = (Integer) iterator.next();
List<Handler> lstHandler = msgHandlerMap .get(cmdResponse);
if(cmdResponse==cmd){
for (int i = 0; i < lstHandler.size(); i++) {
Handler handler2Notify = lstHandler.get(i);
if (handler2Notify != null) {
handler2Notify.sendMessage();
lstHandler.remove(handler2Notify);
}
map里面添加数据:(int cmd, Handler handler)
if(msgHandlerMap.containsKey(cmd)){
List<Handler> list = msgHandlerMap.get(cmd);
if(list == null){
list = new ArrayList<Handler>();
if(!list.contains(handler)){
list.add(handler);
}
}
}else{
List<Handler> lstHandler = new ArrayList<Handler>();
lstHandler.add(handler);
msgHandlerMap.put(command, lstHandler);
}
map里面删除数据:(int cmd, Handler handler)
List<Handler> lstHandler = msgHandlerMap.get(command);
if(lstHandler!=null)
lstHandler.remove(handler);
map遍历通过handler发送消息:
Iterator iterator = msgHandlerMap.keySet().iterator();
while (iterator.hasNext()) {
Integer cmdResponse = (Integer) iterator.next();
List<Handler> lstHandler = msgHandlerMap .get(cmdResponse);
if(cmdResponse==cmd){
for (int i = 0; i < lstHandler.size(); i++) {
Handler handler2Notify = lstHandler.get(i);
if (handler2Notify != null) {
handler2Notify.sendMessage();
lstHandler.remove(handler2Notify);
}
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories