1

在我的应用程序中有十个活动。

当我按下后退按钮时,10 个屏幕已保存历史记录。但是当我单击下一个按钮时,新屏幕没有任何历史数据。

单击下一步按钮时如何维护历史记录?我的意图代码是

Bundle bundle = getIntent().getExtras();
String Group = bundle.getString("GroupApVehicle");
Intent log = new Intent(EngineCompartment.this, FrontAxle.class);

Bundle bun = new Bundle();
bun.putString("Group", Group);
bun.putString("ECSCORE", _StrpretriScoreCount);
System.out.println("Enginegroup" + Group);
bun.putString("TestIDFA", strtestid);
log.putExtras(bun);
startActivityForResult(log,IPC_ID);
4

3 回答 3

6

我建议您通过实现onSaveInstanceState()回调来保存您的活动状态。有可能在 10 次不同的活动之后,Android 会尝试清理内存,保存活动状态可确保操作系统知道您想要保留历史记录。

有关更多信息,请参见此处:http: //developer.android.com/guide/components/tasks-and-back-stack.html#ActivityState

于 2012-10-09T11:47:02.910 回答
1

请描述您的后台堆栈的当前状态(例如活动 A -> B -> C -> D)以及您想要实现的行为(例如切换活动 D -> B)。

编辑:

据我了解,您希望将活动保留在内存中并在用户按下“返回”按钮时保留其状态。您可以使用以下代码覆盖后退按钮的行为:

    公共无效 onBackPressed () {
        moveTaskToBack (true);
    }

但不能保证 Android 会将您的活动保留在内存中。如果操作系统需要额外的内存,它可能会被破坏。修复:您的应用程序应该在您的活动中侦听 onPause() 和 onResume() 事件。您必须对数据进行序列化和反序列化,在活动暂停和恢复时保存活动的状态。

此外,您应该将此属性添加到 AndroidManifest.xml 中的每个活动块中,您只想初始化一次并在应用程序生命周期内保留其状态:

    android:launchMode="singleTask"

然后使用以下代码示例在活动之间切换:

    意图 i = new Intent(C.this, B.class);
    i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    开始活动(一);

您也可以使用 Intent.FLAG_ACTIVITY_REORDER_TO_FRONT,但launchMode 也应设置为“singleTask”。

于 2012-10-09T11:50:44.127 回答
1

您可以将历史记录手动存储在 sharedPreference 中。它是 android http://developer.android.com/reference/android/content/SharedPreferences.html中的数据存储因素之一

于 2012-10-09T12:01:24.397 回答