您的位置:首页 > 移动开发 > Android开发

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);

                              }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android hashmap 异步