2012-07-18 74 views
0

假設我有4個活動:Login,Sync,Main,Details登錄申請的概念

MainDetails只能在用戶登錄並通過同步階段時才能訪問。可以從抽屜上的圖標訪問Main。可以從Main和通知中訪問Details

用戶在30分鐘不活動後(使用服務計時器)註銷。

我不知道我應該採取哪種方式,以確保在用戶登錄這裏是我的兩個方案:

  • 圖標啓動Login如果用戶登錄,檢查,然後啓動Synch ,它也是這樣做的,並啓動Main
  • 圖標啓動Main哪些檢查是用戶登錄的,如果沒有,則啓動LoginLogin自動關閉以顯示Main位於背面堆疊。

然後還有Details如果用戶登錄,需要檢查。

第二個場景似乎更正確的我,因爲它允許推出比Main等活動,但它會迫使我在每個需要用戶登錄的活動中複製檢查代碼(我有兩個以上的活動)。

爲什麼我應該採取的方式?爲什麼?

+0

爲什麼不讓你的服務決定是否用戶是否登錄?您擁有的每項活動都將綁定到您的服務。 – DroidBender 2012-07-18 14:00:05

回答

2

您可以擴展BaseActivity它實現了你所有的檢查代碼,那麼你使用任何新Activity都會有它內置的。

我中有活動獲得50%無需登錄一個應用程序使用此並使用startActivityForResult(...)顯示提示以捕獲登錄嘗試的成功或失敗。

它的作品真的很好,並保持整潔的一切封裝:)

編輯

下面的代碼片段,你想修改:

/** 
* This is an abstract class that all Activities will be based on. 
*/ 
public abstract class BaseActivity extends ActionBarActivity 
{ 
    protected static final int SHOW_WALLET  = 100; 
    protected static final int SHOW_OFFER_DETAIL = 101; 
    protected static final int REGISTER   = 102; 
    protected static final int SHOW_ACCOUNT  = 103; 

    protected static final int LOGGED_IN_OK  = 103; 
    protected static final int REGISTERED_OK  = 104; 

    protected static final int DIALOG_DELAY  = 300; 
    // for passing data in extras 
    protected static final String TEXT_SEARCH  = "text_search"; 
    protected static final String SEARCH_TERM  = "search_term"; 

    protected boolean    mAlternateTitle = false; 
    private Dialog    loading; 
    private Runnable    showDialog; 

     protected final void openAccount() 
     { 
      Intent i; 
      if (LoginManager.getInstance().isLoggedIn()) 
      { 
       i = new Intent(this, MyAccountActivity.class); 
       startActivity(i); 
      } 
      else 
      { 
       i = new Intent(this, LoginActivity.class); 
       startActivityForResult(i, SHOW_ACCOUNT); 
      } 
     } 

} 
+0

這聽起來像是最好的解決方案。 – 2012-07-18 13:58:22

+0

這看起來不錯。但是我需要確保BaseActivity的子類不使用與「登錄」相同的requestCode。 – Jonas 2012-07-18 14:03:13

+0

在BaseActivity中創建一些可以訪問的受保護的final int CODE_ACTIVITY_XYZ常量。使BaseActivity也是抽象的,有助於保持簡單。 – ScouseChris 2012-07-18 14:05:21