SharedPreferences 저장 대상

12827 단어 Android
먼저 저장 해 야 할 실체 클래스 는 Serializable 인 터 페 이 스 를 실현 한 다음 에 그 중의 saveSerializable Entity 를 호출 하면 되 고 꺼 낼 때 getSerializable Entity 를 호출 하면 됩 니 다.
public class ShardPrefUtils {

    private static SharedPreferences mSharedPref;
    private static final String SHAREDPREF_NAME = Constant.SHAREDPREF_NAME;
/**
 * writeObject readObject        
 * Base64.encode        Base64     String 
 *
 * @param object        String   
 * @return String       String
 */
private static String Object2String(Object object) {
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    ObjectOutputStream objectOutputStream = null;
    try {
        objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
        objectOutputStream.writeObject(object);
        String string = new String(Base64.encode(byteArrayOutputStream.toByteArray(), Base64.DEFAULT));
        objectOutputStream.close();
        return string;
    } catch (IOException e) {
        e.printStackTrace();
        return null;
    }
}

/**
 *   Base64  StringObject  
 *
 * @param objectString     String
 * @return object          object
 */
private static Object String2Object(String objectString) {
    byte[] mobileBytes = Base64.decode(objectString.getBytes(), Base64.DEFAULT);
    ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(mobileBytes);
    ObjectInputStream objectInputStream = null;
    try {
        objectInputStream = new ObjectInputStream(byteArrayInputStream);
        Object object = objectInputStream.readObject();
        objectInputStream.close();
        return object;
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }

}

/**
 *   SharedPreference    
 *
 * @param fileKey         key
 * @param key             key
 * @param saveObject      
 */
public static void saveSerializableEntity(String fileKey, String key, Object saveObject) {
    if(mSharedPref == null){
        mSharedPref = MyApplication.mContext.getSharedPreferences(SHAREDPREF_NAME, Context.MODE_PRIVATE);
    }
    SharedPreferences.Editor editor = mSharedPref.edit();
    String string = Object2String(saveObject);
    editor.putString(key, string);
    editor.commit();
}

/**
 *   SharedPreference     
 *
 * @param fileKey      key
 * @param key          key
 * @return object     key     
 */
public static Object getSerializableEntity(String fileKey, String key) {
    if(mSharedPref == null){
        mSharedPref = MyApplication.mContext.getSharedPreferences(SHAREDPREF_NAME, Context.MODE_PRIVATE);
    }
    String string = mSharedPref.getString(key, null);
    if (string != null) {
        Object object = String2Object(string);
        return object;
    } else {
        return null;
    }
}
}

위의 방법 은 Serializable 인 터 페 이 스 를 실현 해 야 합 니 다. Parcleble 인 터 페 이 스 를 실현 하 는 것 은 안 됩 니 다. 만약 에 Bitmap 와 같은 속성 이 있다 면 Serializable 을 사용 할 수 없습니다. Bitmap 능력 은 이미 Parcleable 인 터 페 이 스 를 실 현 했 기 때문에 있 으 면 따로 저장 해 야 합 니 다.

좋은 웹페이지 즐겨찾기