2011-06-10 145 views
4

我想在我的應用中實現登錄屏幕並尋找最佳實踐。 假設此代碼:實施登錄(auth)屏幕的最佳做法是什麼?

public class LoginActivity extends Activity { 
    public void onCreate(Bundle icicle){ 
     super.onCreate(icicle); 
     setContentView(R.layout.activity_login); 
     Button btnLogin=(Button)findViewById(R.id.btnLogin); 
     btnLogin.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       finish(); 
       startActivity(new Intent(getApplicationContext(), MainActivity.class)); 
      } 
     }); 
    } 
} 

public class MainActivity extends Activity { 
    public void onCreate(Bundle icicle){ 
     super.onCreate(icicle); 
     setContentView(R.layout.activity_main); 
     Button btnLogout=(Button)findViewById(R.id.btnLogout); 
     btnLogout.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       finish(); 
       startActivity(new Intent(getApplicationContext(), LoginActivity.class)); 
      } 
     }); 
    } 
} 

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 

    <application android:icon="@drawable/icon" android:label="@string/app_name"> 

     <activity android:name=".LoginActivity" 
        android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity android:name=".MainActivity" 
        android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
     </activity> 
    </application> 
</manifest> 

這將爲第一個應用程序運行的工作,我會記住的密碼。但下一次,當應用程序存儲中已存在密碼時,我不想顯示LoginActivity。所以,我唯一的解決方案:

public class LoginActivity extends Activity { 
    public void onCreate(Bundle icicle){ 
     super.onCreate(icicle); 
     setContentView(R.layout.activity_login); 
     Button btnLogin=(Button)findViewById(R.id.btnLogin); 
     btnLogin.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       finish(); 
       startActivity(new Intent(getApplicationContext(), MainActivity.class)); 
      } 
     }); 
     //consider that passwodExists() looks for credentials 
     if(passwodExists()){ 
      finish(); 
      startActivity(new Intent(getApplicationContext(), MainActivity.class)); 
     } 
    } 
} 

這是可以接受的嗎?

  • 你會用什麼來解決這個問題?
  • 從onCreate()開始Activity或顯示對話框是否安全?

回答

2

我認爲沒關係,只要您考慮主佈局onResume()中的後退按鈕並在沒有有效登錄的情況下關閉應用程序即可。

當我這樣做時,我做了一個啓動畫面類型的活動,確定進入登錄活動或主要活動,並確保啓動畫面活動不是後臺任務歷史記錄的一部分。這樣,當點擊登錄活動的後退按鈕時,它將完成應用程序。

+0

你對後退按鈕有什麼意義? – 2011-06-10 21:43:41

+0

好吧,如果有人在他們的設備上使用後退按鈕,它會(默認情況下)將他們帶到之前的活動,即您的MainActivity。 http://developer.android.com/guide/topics/fundamentals/tasks-and-back-stack.html – 2011-06-10 21:44:56

+0

在開始下一個活動之前,我在當前的一箇中調用finish(),所以它不在'Activity stack'中。我認爲一切都好,或者我錯過了什麼? – 2011-06-10 21:49:59

相關問題