实现登录(auth)屏幕的最佳做法是什么?

时间:2011-06-10 21:21:15

标签: android android-layout android-manifest

我想在我的应用程序中实现登录屏幕并寻找最佳实践。 假设这段代码:

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>

这将适用于第一个应用程序运行,我会记住密码。但是下次,当app存储中已存在密码时,我不想显示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或显示对话框是否安全?

1 个答案:

答案 0 :(得分:2)

我认为只要你考虑主要布局onResume()中的后退按钮就可以了,如果没有有效的登录则关闭应用程序。

当我这样做时,我做了一个启动画面类型活动,确定要转到Login活动或Main活动,并确保启动画面活动不是后退任务历史记录的一部分。这样,当点击登录活动的后退按钮时,它将完成应用程序。