登录会话 - 活动

时间:2010-12-26 14:05:32

标签: android session

我在我的应用程序中登录。我想知道设置可以从任何活动引用的全局会话或等效的最佳方法,以便他们知道用户是否已登录。此外,以便其他活动可以获取用户id来执行数据库事务。

我不想使用putExtra(),因为我必须为我在整个应用程序中构建的每个Intent都这样做。

1 个答案:

答案 0 :(得分:13)

您可以创建一个可以用作全局州持有者的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>

您的应用程序类将以Activity的形式共享所有生命周期事件,并在应用程序退出时被销毁。

您可以使用任何活动或服务中的静态getter和setter访问您的应用程序变量:

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

您也可以选择普通的应用程序类

,而不是选择单例类

替代同一个例子:

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();
相关问题