当我运行另一个应用程序时,变量丢失数据

时间:2015-05-29 18:19:53

标签: android

我构建了一个变量作为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或其他应用程序时,当我再次尝试运行我的应用程序时,它会给我一个错误,因为我的会话失去了价值。

有没有类似的方法可以做我想做的事情?

感谢。

2 个答案:

答案 0 :(得分:4)

  

代码工作正常,但是当我运行谷歌浏览器,YouTube或其他应用程序时,当我再次尝试运行我的应用程序时,它会给我一个错误,因为我的会话失去了价值。

由于内存不足,您的进程已终止。这是perfectly normal

静态数据成员(包括自定义Application对象)只是一个临时缓存。如果您要挂起数据,那么该数据需要由持久数据存储支持:数据库,SharedPreferences,其他形式的文件,Internet等。

答案 1 :(得分:0)

您需要在Session活动中实现OnPause和OnResume事件,以保存和恢复savedInstanceState包中的数据。