1

多くのアクティビティを含む Android GPS アプリケーションを構築しています。私のメイン画面は、リモート データベースから最も近い場所をすべて読み込む Google マップ画面です。リストモード、新しい場所の追加、ログインなど、メニューボタンから選択できる他のアクティビティがあります。

リスト モード (またはその他のアクティビティ) を押してからそのアクティビティを開始し、電話の物理的な戻るボタンを押すと、再起動してすべてをリロードすることなく、マップ アクティビティであるメイン画面に戻ることができます。アプリケーションの起動時に行うようなマーカー。ただし、私の問題は、たとえばリストモードでメニューオプションからマップモードを押すと、マップアクティビティが再起動され、場所が最初から取得されることです。このマップ モード ボタンを押して、物理的な戻るボタンを押したときとまったく同じように再開できるようにしたいと考えています。これどうやってするの?

4

3 に答える 3

1

新しいマップ アクティビティを作成し、この新しいインスタンスをアクティビティ スタックの上に配置していると思います。

したがって、アクティビティ スタックは次のようになります。

  • 新しいマップ アクティビティ
  • リスト活動
  • 古いマップ アクティビティ

私が正しければ、この「新しい」マップ アクティビティから戻ると、リスト アクティビティに戻ります。もう一度戻ると、元のマップ アクティビティ (探しているもの) に移動します。

そのため、List アクティビティにいるときは、新しい Map アクティビティを開始する代わりに、そのアクティビティを終了する必要があります。

インテント フラグの詳細については、このドキュメントを参照してください: インテント フラグ

于 2013-03-25T18:57:48.650 に答える
0

これを見てみましょう:アクティビティのライフサイクルの管理。地図データを「キャッシュ」してリロードする必要がある同様のタイプのアプリがありました。私はこれを参考にしました。

于 2013-03-25T18:03:03.600 に答える
0

マニフェストで、Map アクティビティの起動モードを singleInstance として宣言します。それなら大丈夫だと思います。http://developer.android.com/reference/android/R.styleable.html#AndroidManifestActivity_launchModeから

このアクティビティの 1 つのインスタンスのみを実行できるようにします。このアクティビティは、それ自体が実行されている一意のタスクを取得します。同じインテントで再び起動された場合、そのタスクは前倒しされ、その Activity.onNewIntent() メソッドが呼び出されます。このアクティビティが新しいアクティビティを開始しようとすると、その新しいアクティビティは別のタスクで開始されます。タスクの詳細については、タスクとバック スタックのドキュメントを参照してください。

于 2013-03-25T23:37:53.410 に答える