2015-01-06 5 views
2

로그인이 한 번 발생하고 동기화를 제외하고 대부분 오프라인 상태로 유지되는 android 애플리케이션에 대한 표준 세션 처리 방법이 있습니까? (우리는 세션을 응용 프로그램의 시작과 종료로 정의합니다. 세션은 로그인 및 로그 아웃에 의존하지 않습니다.)오프라인 앱에 대한 세션을 유지하는 방법 android

+1

http://www.androidhive.info/2012/08/android-session-management-using-shared-preferences/ –

답변

3

Android의 공유 응용 프로그램 환경 설정을 사용하여 세션 저장소, 나는 대부분의 안드로이드 응용 프로그램에서 사용하는 완전한 PreferenceHandler 클래스를 공유하고 여기 ,

public class PreferenceHelper { 

    SharedPreferences preferences; 
    Context context; 
    Editor editor; 
    public static final String PREFERENCES_NAME = "YourApplicationName"; 

    public PreferenceHelper(Context context) { 
     preferences = context.getSharedPreferences(PREFERENCES_NAME, 
       Context.MODE_PRIVATE); 
    } 

    public void addPreference(String key, String value) { 
     editor = preferences.edit(); 
     editor.putString(key, value); 
     editor.commit(); 
    } 

    public void addPreference(String key, Set<String> values) { 
     editor = preferences.edit(); 
     editor.putStringSet(key, values); 
     editor.commit(); 
    } 

    public void addPreference(String key, int value) { 
     editor = preferences.edit(); 
     editor.putInt(key, value); 
     editor.commit(); 
    } 

    public void addPreference(String key, float value) { 
     editor = preferences.edit(); 
     editor.putFloat(key, value); 
     editor.commit(); 
    } 

    public void addPreference(String key, boolean value) { 
     editor = preferences.edit(); 
     editor.putBoolean(key, value); 
     editor.commit(); 
    } 

    public void addPreference(String key, long value) { 
     editor = preferences.edit(); 
     editor.putLong(key, value); 
     editor.commit(); 
    } 

    public void editPreference(String key, String value) { 
     editor = preferences.edit(); 
     if (preferences.contains(key)) { 
      editor.remove(key); 
     } 
     addPreference(key, value); 
    } 

    public void editPreference(String key, Set<String> value) { 
     editor = preferences.edit(); 
     if (preferences.contains(key)) { 
      editor.remove(key); 
     } 
     addPreference(key, value); 
    } 

    public void editPreference(String key, int value) { 
     editor = preferences.edit(); 
     if (preferences.contains(key)) { 
      editor.remove(key); 
     } 
     addPreference(key, value); 
    } 

    public void editPreference(String key, float value) { 
     editor = preferences.edit(); 
     if (preferences.contains(key)) { 
      editor.remove(key); 
     } 
     addPreference(key, value); 
    } 

    public void editPreference(String key, boolean value) { 
     editor = preferences.edit(); 
     if (preferences.contains(key)) { 
      editor.remove(key); 
     } 
     addPreference(key, value); 
    } 

    public void editPreference(String key, long value) { 
     editor = preferences.edit(); 
     if (preferences.contains(key)) { 
      editor.remove(key); 
     } 
     addPreference(key, value); 
    } 

    public String getStringValue(String key) { 
     String value = preferences.getString(key, ""); 
     return value; 
    } 

    public Set<String> getValues(String key) { 
     Set<String> values = preferences.getStringSet(key, null); 
     return values; 
    } 

    public int getIntValue(String key) { 
     int value = preferences.getInt(key, -1); 
     return value; 
    } 

    public boolean getBooleanValue(String key) { 
     boolean value = preferences.getBoolean(key, false); 
     return value; 
    } 

    public float getFloatValue(String key) { 
     float value = preferences.getFloat(key, -1); 
     return value; 
    } 

    public Long getLongValue(String key) { 
     Long value = preferences.getLong(key, -1); 
     return value; 
    } 

    public void removeKey(String key) { 
     preferences.edit().remove(key); 
     preferences.edit().commit(); 
    } 

    public void clearAllPreferences() { 
     preferences.edit().clear(); 
     preferences.edit().commit(); 
    } 
} 

단순히이 클래스의 객체를 만들 전화 응용 프로그램에서이를 사용하려면,

PreferenceHelper preferences=new PreferenceHelper(getApplicationContext()); 

당신이 세그먼트 또는 기타 서브 레이아웃 사용이 방법을 사용하는 경우,

PreferenceHelper preferences = new PreferenceHelper(getActivity().getApplicationContext()); 

다음은 어떻게에서 값을 설정하는 내 로그인 요구 사항에 대한 당

if (preferences.getBooleanValue("is_logged")) { 
      preferences 
        .addPreference("last_login", DateHelper.getCurrentDate()); 
      startActivity(new Intent(this, MainActivity.class)); 
      finish(); 
     } 

을이 사용하고의 예입니다 기본 설정은 내가 로그인 할 때이 방법, 로그인 방법의 사용이에서 ,이 질문을 해결할 수

preferences.addPreference("is_logged", true); 
preferences.addPreference("email", email); 
preferences.addPreference("user_name", username); 
preferences.addPreference("password", password); 
preferences.addPreference("last_login", 
DateHelper.getCurrentDate()); 
int uid = JsonHelper.getReturnID(result); 
boolean is_admin, is_manager; 
is_admin = JsonHelper.getBoolean(result, "is_admin"); 
is_manager = JsonHelper.getBoolean(result, "is_manager"); 
preferences.addPreference("is_admin", is_admin); 
preferences.addPreference("is_manager", is_manager); 
preferences.addPreference("uid", uid); 
String phone, name; 
phone = JsonHelper.getStringFromResult(result, "phone"); 
name = JsonHelper.getStringFromResult(result, "name"); 
preferences.addPreference("phone", phone); 
preferences.addPreference("name", name); 
startActivity(new Intent(StartingActivity.this, 
MainActivity.class)); 

희망을 사용하고 있습니다.

+0

답장을 보내 주셔서 감사합니다. 안드로이드에 세션 ID를 만드는 표준 방법이 있는지 찾아 보았습니다. 응용 프로그램을 실행 한 다음 서버에 동기화하십시오. – shanu

+0

안드로이드에서 사용할 수있는 표준 방법은 없습니다. 코드를 수동으로 처리하기 만하면됩니다. –

관련 문제