2013-03-01 4 views
1

안녕하세요. 앱을 파괴 한 후에도 '로그인 한'것으로 보이는 엄격한 요구 사항이있는 앱이 있습니다. 앱이 삭제 된 경우 나중에 다시 로그인하면 이전에 로그인 화면을 건너 뛰고 사용자가 이전에 본 페이지로 직접 이동해야합니다. (이미 모든 세션 관련 변수를 처리하고 있습니다.)앱이 파괴 된 경우에도 '로그인'유지

나는 Shared Preferences을 사용해 보았습니다.하지만 수동으로 응용 프로그램을 파괴하면 로그인 화면으로 되돌아갑니다.

DB에 수동으로 환경 설정을 저장하려고했는데 (아마도 Shared Preferences은 무엇입니까?), 이것이 처음로드 된 활동이기 때문에 여전히 로그인 활동을로드합니다. 따라서이 문제는 사용자가 어떤 활동을 항상 선호 하는지를 선호하는 경우가 많으며이 활동은 바로 onResume()에로드됩니다.

내 질문 : 전에 이런 종류의 시나리오를 다뤄 본 사람이 있습니까? 활동 사전로드에 어떻게 접근해야합니까? 로그인 화면에서 환경 설정을로드 할 때 이전 활동 환경 설정을 확인하고 간단히로드합니다 (사용자가 로그인되었다고 가정).

더 좋은 방법이 있나요? 적절한 활동 시작에 동적으로로드하는 더 기본적인 방법이 있습니까?

어떤 도움이 정말

을 감사 편집 : 좋아 그냥이를 게시 한 후 내가 정말해야 할 일을했을 모든 적절한 세션 변수가 설정되었는지 여부를 OnResume에 체크를 추가 깨달았다. Akbari가 아래에서 말했듯이 실제로 활동에로드됩니다. 필자는 Preferences 클래스를 표준 Android 인 SharePreferences과 완벽하게 작동하도록 롤백했습니다. 이런 그것에 대해 행복 :

간단하게하고 뭔가 :

// load preferences 
    preferences.readPreferences();  

    // if preferences exist load straight to RecordActivity 
    if (application.currentSessionId!=null) { 
     Intent i = new Intent(getApplicationContext(), RecordActivity.class); 
     startActivity(i);   
    }  

답변

1
당신은 환경 설정에서 로그인 상태를 저장하고

@Override 
    public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState);SharedPreferences prefs; 
    prefs = getSharedPreferences("your_pref", MODE_PRIVATE); 

    boolean login_status = prefs.getBoolean("login_status", false); 
    if (login_status) { 
     Log.v(LOG_TAG, "UserInfo>>User already logged in"); 
     Intent intent = new Intent(this, HomeActivity.class); 
     startActivity(intent); 
     this.finish(); 
    } 
} 

다음은 로그인 활동의()에서 onCreate에서 방법을 확인할 수 있습니다

, 로그인 상태를 확인하고 이미 로그인 한 경우 사용자를 다음 활동으로 리디렉션합니다.

+0

실제로 질문을 게시 한 직후에 생각보다 훨씬 간단하다는 것을 깨달았습니다. 근본적으로 당신이 여기서 말한 것과 똑같이 구현했습니다. 건배 :) – wired00

+0

fantastic, 나는 방금 환경 설정 클래스를 수동 데이터베이스 저장 대신에'SharePreferences'를 사용하여 변경했으며, 여전히 완벽하게 작동합니다. 그 결과에 매우 만족합니다. – wired00

관련 문제