2011-06-10 144 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

相关问题