2

こんにちは(ここで私の最初の質問;-)

同様の質問があるかもしれませんが、私の質問に答えたり、本当の解決策を提供したりするものはありません...


問題
A(ルート) が開始されBます。B他の活動を開始できます。Aは、スタックを破棄して (ネットワーク接続が失われます)、開始することを決定しますC。これは思い切った決定のように見えますが、ユーザーはそれを期待しており、この場合は本当に理にかなっています...

質問
どうすればいいですか?特定のフラグを使用するか、単に次のようなものを呼び出すことを期待しdismissStackます。しかし、適切な解決策が見つかりません(以下の調査を参照)。

調査
たくさんのドキュメントを読みましたが、利用可能なフラグが私のニーズに合っていません (または、正しく理解していませんでした)。そこにある他の回答は、開始されたアクティビティを(たとえば、配列で)覚えて、必要に応じて終了するように教えてくれます。しかし、これは私には汚いように思えます。どういうわけか、それが正しい解決策であるとは受け入れられません。私が望むもっときれいなものがあるに違いない?!
(スタックを保存することは私には間違っているようにさえ思えます。アプリはシステムによって強制終了される可能性があるため、静的データは起動時に再度読み込まれます。したがって、保存されたスタックを保持する必要があります。これはさらに汚れます.. .)


私のコードと私が試したことを更新してください(要約):

// in A
startActivityForResult(new Intent(this, B.class), REQUEST_B);

// network fail in A
// setting any flags on C has no influence
startActivityForResult(new Intent(this, C.class), REQUEST_C);

( FLAG_ACTIVITY_CLEAR_TOPは解決策ではありません。ドキュメントをお読みください...)

私は押し続け、まだポップアップし、とてもまだそこにいますBack...CB

を呼び出してアクティビティを削除できfinishActivity(REQUEST_B)ます。しかし、B別のアクティビティを開始すると、後でヒットしDた場合でもポップアップします。なくなったけどまだある…BackCBD


まだ理解していない、または見逃しているものがあると確信しています。本当にそうしなければならない場合、誰かが私にヒントを与えたり、私の研究を承認したりできますか...

4

3 に答える 3

1

インテントで使用するFLAG_ACTIVITY_CLEAR_TOPフラグを探していると思います。

上記のリンクのドキュメントから、例が提供されています。

たとえば、アクティビティ A、B、C、D で構成されるタスクを考えてみましょう。アクティビティ B のコンポーネントに解決されるインテントで D が startActivity() を呼び出すと、C と D は終了し、B は指定されたインテントを受け取ります。となり、スタックは A、B になります。

Android のタスクとバックスタックの詳細については、Android Dev Docs のこのリンクを参照してください。

于 2011-10-17T17:17:37.067 に答える
0

新しいタスクとクリアタスクの両方のフラグを使用して、スタックから以前のすべてのアクティビティをクリアできます。

i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
于 2012-11-12T11:27:26.527 に答える
0

それは私がこれまでに得たものであり、かなりうまく機能します:

を使用しstartActivityForResultます。実際に結果を待つ必要がない場合は、ダミーのリクエスト コードを作成します。次にonDestroy、すべてのアクティビティでこれを行います。

if (isFinishing()) {
    finishActivity(REQUEST_CODE);
}

例:A, B, C, Dスタックに call finishActivity(REQUEST_B)fromがあります。これにより、呼び出しAが連鎖してkillsとkills が発生します。onDestroyBCCD


それが私が考えることができる最善の解決策です。そこにある他のソリューションは、アクティビティのライフサイクルを台無しにしているか、エラーが発生しやすいものです。

私はまだきれいな方法があることを願っています...

于 2011-10-18T09:57:32.190 に答える