1

私のアプリケーションでは、10のアクティビティがあります。

戻るボタンを押すと、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()ます。Androidがメモリをクリーンアップしようとする10の異なるアクティビティの後に、アクティビティの状態を保存することで、OSが履歴を保持したいことを確実に認識できるようになる可能性があります。

詳細については、こちらをご覧ください: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の切り替え)を説明してください。

編集:

私が理解しているように、あなたはアクティビティをメモリに保持し、ユーザーが「戻る」ボタンを押したときの状態を保持したいと考えています。次のコードを使用して、戻るボタンの動作をオーバーライドできます。

    public void onBackPressed(){
        moveTaskToBack(true);
    }

ただし、Androidがアクティビティをメモリに保持することは保証されていません。OSが追加のメモリを必要とする場合、それは破壊される可能性があります。修正:アプリケーションは、アクティビティ内のonPause()およびonResume()イベントをリッスンする必要があります。データをシリアル化および逆シリアル化し、一時停止および再開したときのアクティビティの状態を保存する必要があります。

また、この属性をAndroidManifest.xmlの各アクティビティのブロックに追加する必要があります。このブロックは、一度だけ初期化して、アプリケーションの存続期間中その状態を保持する必要があります。

    android:launchMode = "singleTask"

次に、次のコードサンプルを使用して、アクティビティを切り替えます。

    インテントi=new Intent(C.this、B.class);
    i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(i);

Intent.FLAG_ACTIVITY_REORDER_TO_FRONTを使用することもできますが、launchModeも「singleTask」に設定する必要があります。

于 2012-10-09T11:50:44.127 に答える
1

履歴はsharedPreferenceに手動で保存できます。これは、Androidのデータストレージ要素の1つです http://developer.android.com/reference/android/content/SharedPreferences.html

于 2012-10-09T12:01:24.397 に答える