android 存不同用户信息,Android工作整理-本地保存用户等信息

import android.app.Activity;

import android.content.SharedPreferences;

import android.text.TextUtils;

import com.google.gson.Gson;

/**

* 本地持久化存储,生成bean转json保存到SharedPreferences

* 使用:

*

* //保存登录信息

* MySetting.UserInfo mUserInfo = MySetting.getInstance().getUserInfo();

* mUserInfo.token = "XXXXXX";

* MySetting.getInstance().setUserInfo(mUserInfo);

*

* //启动页判断是否已登录

* if(MySetting.getInstance().getUserInfo().isLogin()){//已登录

* startActivity(new Intent(SplashActivity.this, MainTabActivity.class));

* }else{

* startActivity(new Intent(SplashActivity.this, LoginActivity.class));

* }

*

* //退出登录

* MySetting.getInstance().setUserInfo(null);

* startActivity(new Intent(getActivity(), LoginActivity.class));

*/

public class MySetting {

//这里的配置文件要求是单例的

private static MySetting mMySetting;

//向本地文件写入json内容的文件名与key

private static String FILENAME_AND_KEY = MySetting.class.getSimpleName();

//当前本地保存的用户信息

private UserInfo mUserInfo = new UserInfo();

/*=====================LifeCycle==================*/

/**

* 获取单例 ,

* 1 应用启动时从本地获取。以后都从内存中读取

* 2 本地获取不到时,创建默认配置信息

* 注:更改时,先个性当前数据内容,再调用saveData()方法保存到本地。

*

* @return 得到当前应用所需求的配置信息实例

*/

public static MySetting getInstance() {

if (mMySetting == null) {

synchronized (MySetting.class) {

if (mMySetting == null) {//当前为空从本地取

mMySetting = getData();

}

if (mMySetting == null) {//本地没取到数据,说明是首次安装应用,设置默认信息

mMySetting = new MySetting();

} else {//本地有值,判断本地的值的版本号与当前app的版本号是否相同

// MyLog.info(TAG + "==getInstance,本地有值,判断本地的值的版本号与当前app的版本号是否相同");

// if (mMySetting.getEnvirInfo().VERSION_CODE < BuildConfig.VERSION_CODE) {//小于当前版本,进行清空配置操作

//// MyLog.info(TAG + "==getInstance,小于当前版本,进行清空配置操作");

// mMySetting.setEnvirInfo(new EnvirInfo());

// }

}

}

}

return mMySetting;

}

/**

* 获取用户信息

*

* @return 没有时,返回空对象,不是null

*/

public UserInfo getUserInfo() {

mUserInfo = mUserInfo == null ? new UserInfo() : mUserInfo;

return mUserInfo;

}

/**

* 设置用户信息

*/

public void setUserInfo(UserInfo mUserInfo) {

this.mUserInfo = mUserInfo;

saveData();

}

/*==================InnerClass==============*/

/**

* 当前用户app本地保存的用户信息

*/

public static class UserInfo {

public String token = "";

/**

*

* @return true:已登录,false:未登录

*/

public boolean isLogin() {

if (TextUtils.isEmpty(token)) {

return false;

}

return true;

}

}

/*====================ChildFunction============*/

//保存当前数据

private boolean saveData() {

SharedPreferences.Editor editor = MyApplication.getMyApplication().getSharedPreferences(FILENAME_AND_KEY, Activity.MODE_PRIVATE).edit();

editor.putString(FILENAME_AND_KEY, toJson(this));

boolean isEditorSucc = editor.commit();

return isEditorSucc;

}

// 获取本地setting数据

// @return 异常时为null

private static MySetting getData() {

SharedPreferences mSharedPreferences = MyApplication.getMyApplication().getSharedPreferences(FILENAME_AND_KEY, Activity.MODE_PRIVATE);

String jjbsetingStr = mSharedPreferences.getString(FILENAME_AND_KEY, null);

return fromJson(jjbsetingStr, MySetting.class);

}

/**

* 将对象转换成json字符串

* (此方法会引导 某些手机方法不再向下进行了。)

*

* @param obj 要转换json的对象

* @return 对应的json字符串,失败时为null

*/

public static String toJson(Object obj) {

try {

return new Gson().toJson(obj);

} catch (Exception e) {

// JJBLog.e(JsonManager.class.getName(), "e-->" + e.getMessage());

return null;

}

}

/**

* 将json字符串转换成对象

*

* @param jsonStr 需要解析对象的json字符串

* @param cls 要解析对象类型的.class

* @param 请求与返回是相关的对象类型

* @return 对应的对象,失败时返回null

*/

public static T fromJson(String jsonStr, Class cls) {

try {

return new Gson().fromJson(jsonStr, cls);

} catch (Exception e) {

return null;

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值