2013-03-01 54 views
1

您好我有一個應用程序,嚴格要求出現「登錄」,即使應用程序被破壞。如果應用程序被破壞,那麼以後重新加載(如果以前登錄),登錄屏幕應該直接跳過到用戶以前查看的頁面。 (我已經處理所有會話相關的變量)即使在應用程序被破壞的情況下保持'登錄'

我試過使用Shared Preferences但如果我手動銷燬應用程序它會回到登錄屏幕,我不能有這種情況發生。

我試圖存儲偏好數據庫手動(這可能是什麼呢Shared Preferences呢?),但它仍然加載過程的登錄活動,因爲這是我第一次加載活動。因此,這個問題更多的是保持用戶始終使用哪個活動的偏好,然後直接加載到此onResume()

我的問題:有沒有人處理過這種情況?我應該如何處理預加載活動。我一直在想,當我在登錄屏幕中加載我的偏好時,我會檢查前面的活動首選項,並簡單地加載(假設用戶已登錄)。

有沒有更好的方法來解決這個問題?是否有一種更加原生的方式來動態加載適當的Activity啓動?

任何幫助,非常感謝

編輯:好吧剛剛發佈此之後,我意識到我真正要做的就是添加一個檢查中的onResume相應的會話變量是否設置。然後加載到活動中,實際上就像Akbari在下面所說的那樣。我已將我的偏好設置類重新轉換爲使用標準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

可以保存登錄狀態的喜好和的onCreate檢查()方法,您登錄活動

@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(); 
    } 
} 

這裏,它會檢查登錄狀態並將用戶重定向到下一個活動(如果已經登錄)

+0

實際上,在我發佈該問題後,我意識到它比我想象的要簡單得多。我基本上按照你在這裏所說的來實施。歡呼:) – wired00 2013-03-01 06:46:41

+0

奇妙的是,我剛剛改變了我的偏好類回到使用'SharePreferences'而不是手動數據庫保存,它仍然工作完美。非常滿意這一結果 – wired00 2013-03-01 07:00:03

相關問題