Как лучше всего использовать экран входа (авторизации)? - PullRequest
4 голосов
/ 11 июня 2011

Я хочу внедрить экран входа в свое приложение и ищу лучшую практику.Предположим, этот код:

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

Это приемлемо?

  • Что бы вы использовали для такой проблемы?
  • Безопасно ли запускать Activity или показывать диалог из onCreate ()?

1 Ответ

2 голосов
/ 11 июня 2011

Я думаю, что все в порядке, если учесть кнопку возврата в основных макетах onResume () и закрыть приложение, если нет действительного логина.

Когда я сделал это, я выполнил действие типа заставки, которое решило перейти к действию Вход в систему или к основному действию, и убедился, что действие заставки не было частью истории задних задач. Таким образом, если затем нажать кнопку «Назад» при входе в систему, приложение завершит работу.

...