gpt4 book ai didi

Android - 恢复上次查看的 Activity

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:36:36 25 4
gpt4 key购买 nike

我有 3 个不同的 Activity,用户可以在这些 Activity 之间导航,没有特定的顺序。我的目标有两个:

  1. 当用户在应用程序恢复时切换到其他内容时,即使应用程序已终止,我也想从用户离开的地方开始
  2. 当上一个 Activity 恢复时,我想将其恢复到上次查看的状态(我想我对如何实现这个状态有一个很好的想法)

我认为问题不在于 start/stop - 我几乎得到了我需要的东西,但如果应用程序被终止,则 onCreate()。在这种情况下 - 它会选择我在 list 中配置的 Activity 。我想我可以在该默认 Activity 的 onCreate() 方法中添加一些内容,但是有没有更好的方法我可能会遗漏?

最佳答案

如果您的应用程序尚未“终止”,那么#1 应该已经可以工作,而#2 只需要将所有未自动管理的值保存到 onSaveInstanceState() 中的 Bundle 中。然后在 onRestoreInstanceState() 中恢复它们.

这是一种 hack,但我认为在应用程序实际终止的情况下,#1 的最佳选择是将最近的 Activity 保存在每个 Activity 类的 onResume 中,然后在您首次运行时保存您的第一个 Activity 的 onCreate 进行检查,然后启动正确的 Activity ......甚至可能在开始时放入一个空白 Activity 。像这样:

启动 Activity :

public class StartActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

// get last open Activity
String lastActivity = PreferenceManager.getDefaultSharedPreferences(this).getString("last_activity", "");
if (last_activity == MyActivity2.getSimpleName()) {
startActivityForResult(new Intent(this, MyActivity2.class));
} else if (last_activity == MyActivity3.getSimpleName()) {
startActivityForResult(new Intent(this, MyActivity3.class));
} else {
// assume default activity
startActivityForResult(new Intent(this, MyActivity1.class));
}
}

public void onActivityResult() {
// kill the activity if they go "back" to here
finish();
}
}

然后在所有其他 Activity (MyActivity1,2,3) 中像这样保存值:

@Override
public void onResume() {
Editor e = PreferenceManager.getDefaultSharedPreferences(this).edit();
e.putString("last_activity", getClass().getSimpleName());
e.commit();

super.onResume();
}

您还必须手动处理保存/恢复每个 Activity 的数据。您可以将所需的所有值保存到每个 Activity 的 onPause() 内的首选项中,然后在 onResume() 中恢复它。

关于Android - 恢复上次查看的 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1450019/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com