Вход в сессию - Деятельность - PullRequest
7 голосов
/ 26 декабря 2010

У меня есть логин в моем приложении. Я хочу знать лучший способ установить глобальный сеанс или эквивалент, на который я могу ссылаться из любого действия, чтобы они знали, вошел ли пользователь в систему. Кроме того, чтобы другие действия могли получить идентификатор пользователя для выполнения транзакций базы данных.

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

1 Ответ

13 голосов
/ 26 декабря 2010

Вы можете создать класс Application, который можно использовать в качестве держателя глобального состояния.

Вот пример кода:

public class SampleApplication extends Application {

    private static String username;
    private static String password;

    @Override
    public void onCreate() {
        super.onCreate();
        username="";
        password="";
    }

    public static String getUsername() {
        return username;
    }

    public static void setUsername(String username) {
        SampleApplication.username = username;
    }

    public static String getPassword() {
        return password;
    }

    public static void setPassword(String password) {
        SampleApplication.password = password;
    }

}

После объявления статических методов и переменных вы должны определить свой класс приложения в вашем AndroidManifest.xml. Используйте атрибут android:name тега application для определения имени вашего класса.

Вот еще пример кода:

<application 
    android:name=".SampleApplication"
    android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:name=".SampleApp"
              android:label="@string/app_name"
              >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

</application>

Ваш класс приложения поделится всеми событиями жизненного цикла как события и будет разрушен при выходе из приложения.

Вы можете получить доступ к переменным приложения с помощью статических методов получения и установки из любого действия или службы:

SampleApplication.setUsername("");
String currentUserName=SampleApplication.getUsername();
SampleApplication.setPassword("");
String currentPassword=SampleApplication.getPassword();

Вы также можете вместо обычного класса выбрать обычный класс Application

Альтернатива тому же примеру:

public class SampleApplication extends Application {

    private String username;
    private String password;

    @Override
    public void onCreate() {
        super.onCreate();
        username="";
        password="";
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        SampleApplication.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        SampleApplication.password = password;
    }

}

Вы можете получить к ним доступ с помощью:

((SampleApplication)getApplication()).getUsername();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...