Java 停止android活动时保留变量值

Java 停止android活动时保留变量值,java,android,android-intent,Java,Android,Android Intent,我有两个活动,A和B。按活动A中的按钮可以打开活动B 在活动B中,我有一个整数变量,当我从A返回到活动B时,我希望保留该变量。我的问题是,当我按下后退按钮从B返回到A时,活动被销毁 我已将onBackPressed方法改写为: @凌驾 反压公共空间{ 意图i=新意图此,Game.class; 斯塔维蒂; } 我可以从我的日志中看到,在按下“后退”按钮后,活动B处于“停止”状态,但是,没有调用onRestart,因此该活动必须由于内存原因而被终止 我已经阅读了其他帖子的答案,其中建议我使用onSa

我有两个活动,A和B。按活动A中的按钮可以打开活动B

在活动B中,我有一个整数变量,当我从A返回到活动B时,我希望保留该变量。我的问题是,当我按下后退按钮从B返回到A时,活动被销毁

我已将onBackPressed方法改写为:

@凌驾 反压公共空间{ 意图i=新意图此,Game.class; 斯塔维蒂; }

我可以从我的日志中看到,在按下“后退”按钮后,活动B处于“停止”状态,但是,没有调用onRestart,因此该活动必须由于内存原因而被终止

我已经阅读了其他帖子的答案,其中建议我使用onSaveInstanceState,但当我尝试在onCreate中访问捆绑包时,捆绑包为空。未调用onRestoreInstanceState方法

 protected void onSaveInstanceState(Bundle savedInstanceState){
    Log.i(LOG, "instance saving");
    super.onSaveInstanceState(savedInstanceState);
    savedInstanceState.putInt("score", userScore);
}

我也尝试过SharedReferences,但这没有用,因为我不想在故意破坏活动/应用程序时保留数据。

您可以在app类中存储变量,也可以为此创建自己的singleton类

在onBackPressed上启动活动-a肯定会终止当前活动-B。只需在活动-B中调用onBackPressed,并添加一个名为onResume的阶段,当您从a恢复到活动B时,该阶段将被调用,而不是再次启动活动

删除此项:

@Override
public void onBackPressed(){
    Intent i = new Intent(this, Game.class);
    startActivity(i);
}
为此:

@Override
public void onBackPressed(){
    super.onBackPressed();
}   
当您从A返回B时,在B@Override stage onResume中,您可以在从活动A返回时保存该值

将此添加到活动B中:

@Override
protected void onResume() {
    super.onResume();
    // save values here for resume
}
查看活动生命周期:


我认为你的问题在于理解整个任务生态系统。当您按下“后退”按钮时,您将从任务中弹出您的活动,因为它将被销毁并调用onDestroyed。总而言之,我认为你每次都会得到一个全新的活动。未调用onSaveInstanceState,因为活动由用户而不是操作系统终止。 更深入地了解这个开发人员。 另外,我认为这两个人一定很有帮助:而且