我构建了一个变量作为Session。我在登录时保存特定用户的ID。
我在登录asynctask
中声明变量@Override
protected void onPostExecute(String result){
if(result == ""){
this.statusField.setText("Wrong password.");
}else{
context.startActivity(new Intent(context,ListUsersActivity.class));
Session.suserid = result;
}
}
public static class Session{
public static String suserid;
}
我的会话课程:
public class NewSession extends Application {
Session session = new Session();
public String getUserId() {
return session.suserid;
}
}
要从用户那里获取ID,我只需要调用它:
NewSession app = (NewSession) getApplication();
userid = app.getUserId();
代码工作正常,但是当我运行谷歌浏览器,YouTube或其他应用程序时,当我再次尝试运行我的应用程序时,它会给我一个错误,因为我的会话失去了价值。
有没有类似的方法可以做我想做的事情?
感谢。
答案 0 :(得分:4)
代码工作正常,但是当我运行谷歌浏览器,YouTube或其他应用程序时,当我再次尝试运行我的应用程序时,它会给我一个错误,因为我的会话失去了价值。
由于内存不足,您的进程已终止。这是perfectly normal。
静态数据成员(包括自定义Application
对象)只是一个临时缓存。如果您要挂起数据,那么该数据需要由持久数据存储支持:数据库,SharedPreferences
,其他形式的文件,Internet等。
答案 1 :(得分:0)
您需要在Session活动中实现OnPause和OnResume事件,以保存和恢复savedInstanceState包中的数据。