zoukankan      html  css  js  c++  java
  • 在WelcomeActivity中完成恢复用户功能 resumeUser()(后改为loginUser())

    (后改为loginUser(),只存在注册和登录,不存在恢复)

    一。在WelcomeActivity中的代码 

    这里我们是根据deviceid来查询用户的。

    //要用到网络 ,所以开一个线程
        private void resumeUser() {
            ToastUtils.ToastShort(this, "resume user");
            new Thread(){
                @Override
                public void run() {        
                    User mUser = new User();
                    mUser.setDeviceid(DeviceUtils.getDeviceId(WelcomeActivity.this));
                    User resumeUser =  mUser.resumeUser();
                    if (resumeUser!=null){
                        handler.sendEmptyMessage(RESUME_OK);
                        Log.i("WelcomeActivity resumUser()", "resumed and save user");
                        String jsonUser = new Gson().toJson(resumeUser);
                        SettingUtils.setLogin(WelcomeActivity.this, true);
                        SettingUtils.saveJsonUser(WelcomeActivity.this, jsonUser);
                        Log.i("查看Setting中的数据 jsonUser",
                                new Gson().toJson(SettingUtils.getUserFromJson(WelcomeActivity.this)));
                        Log.i("查看 是否登录", String.valueOf(SettingUtils.isLogin(WelcomeActivity.this)));
                        
                        WelcomeActivity.this.startActivity(new 
                                Intent(WelcomeActivity.this, MainActivity.class));
                        WelcomeActivity.this.finish();
                    }else {//这里可以用handler来提示失败
                        Log.i("WelcomeActivity resumeUser()", "resume failed");
                        handler.sendEmptyMessage(RESUME_FAILED);//send a message contain only what 
                    }
                }    
            }.start();
        }
        private final int RESUME_FAILED=21;
        private final int RESUME_OK=22;
        //处理resume失败的情况 
        Handler handler = new Handler(){
            @Override
            public void handleMessage(Message msg) {
                if (msg.what==RESUME_FAILED){
                    ToastUtils.ToastShort(WelcomeActivity.this, "恢复失败");
                }
                if (msg.what==RESUME_OK){
                    ToastUtils.ToastShort(WelcomeActivity.this, "恢复成功");
                }
            }
            
        };

     这里还可以考虑在恢复的时候,有一个旋转一进度指示。没有做。

    还有,恢复后,头像的设置问题,得从网络上下载头像才行。

    二。在User类中的resumeUser()方法

    /**
         * resume user 用的是查询deviceid 
         * @return User 
         */
        public User resumeUser() {
            HttpUtils http = new HttpUtils();
            User mUser = null;
            Map<String , String>paramMap= new HashMap<String, String>();
            paramMap.put("deviceid",getDeviceid() );
            try{
                String response = http.getExecute(paramMap, HttpGetUrl.getUser());
                Log.i("User resumeUser() response",response);
                mUser = new Gson().fromJson(response, User.class);
                return mUser;
            } catch (IOException e) {
                e.printStackTrace();
            }catch(Exception e2){
                e2.printStackTrace();
            }
            return null;
        }

    三。在HttpUtils中要有getExecute(Map, String)方法

    这里可以参考

    http://ipjmc.iteye.com/blog/1577495

    /**
         * 不是static,不能直接引用,
         * @ paramMap, url
         * @throws IOException 
         * @throws ClientProtocolException 
         */
        public  String getExecute(Map<String, String>paramMap, String url) 
                throws ClientProtocolException, IOException{
            Log.i("getExecute" , "in");
            List<BasicNameValuePair> params = new LinkedList<BasicNameValuePair>();
            
            for (Map.Entry<String , String > param: paramMap.entrySet()){
                String key = param.getKey();
                params.add(new BasicNameValuePair(key,  param.getValue()));
            }
            //对对数编码 
            String param = URLEncodedUtils.format(params, "UTF-8");
            HttpGet httpGet = new HttpGet(url+"?"+param);
            HttpResponse response =  client.execute(httpGet);
            return EntityUtils.toString(response.getEntity(),"utf-8");
            
        }
  • 相关阅读:
    Eclipse+Java+OpenCV246人脸识别
    Eclipse+Java+OpenCV246环境搭建和代码测试
    Request对象和Response对象详解
    request与response对象详述
    request对象和response对象
    减少HTTP请求之将图片转成二进制并生成Base64编码,可以在网页中通过url查看图片(大型网站优化技术)
    base64码通过http传输 +号变 空格 问题解决
    RSA Android加密的数据服务器上无法解密?
    RSA解密时javax.crypto.BadPaddingException: Data must start with zero
    SRA解密报错:Data must start with zero
  • 原文地址:https://www.cnblogs.com/chuiyuan/p/4071973.html
Copyright © 2011-2022 走看看