在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");
        
    }

 

posted @ 2014-11-03 19:29  chuiyuan  阅读(345)  评论(0编辑  收藏  举报