在我的申请中有十项活动。
当我按下后退按钮时,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);
答案 0 :(得分:6)
我建议您通过实施onSaveInstanceState()
回调来保存您的活动状态。机会是在Android尝试清理内存的10个不同活动之后,保存活动状态可确保操作系统知道您希望保留历史记录。
有关详细信息,请参阅此处:http://developer.android.com/guide/components/tasks-and-back-stack.html#ActivityState
答案 1 :(得分:1)
请描述您的后台堆栈的当前状态(例如活动A - > B - > C - > D)以及您要实施的行为(例如切换活动D - > B)。
编辑:
据我了解,您希望将活动保留在内存中,并在用户按下“后退”按钮时保持其状态。 您可以使用以下代码覆盖后退按钮的行为:
public void onBackPressed () { moveTaskToBack (true); }
但不能保证,Android会让你在内存中活动。如果操作系统需要额外的内存,它可能会被破坏。修复:您的应用程序应该监听活动中的onPause()和onResume()事件。您必须序列化和反序列化您的数据,在活动暂停和恢复时保存活动的状态。
此外,您应该将此属性添加到AndroidManifest.xml中的每个活动块,您只想初始化一次并在应用程序生命周期内保留它的状态:
android:launchMode="singleTask"
然后使用以下代码示例在活动之间切换:
Intent i = new Intent(C.this, B.class); i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(i);
您也可以使用Intent.FLAG_ACTIVITY_REORDER_TO_FRONT,但也应将launchMode设置为“singleTask”。
答案 2 :(得分:1)
您可以在sharedPreference中手动存储历史记录。 它是android中的一个数据存储因子 http://developer.android.com/reference/android/content/SharedPreferences.html