1

私のアプリケーションはフォアグラウンドサービスを開始し、サーバーへの接続を維持します。これは、pendingIntent witchshowMainActivityを使用したショー通知です。i(ユーザー)が(デスクトップまたはアプリケーションリストの)アプリケーションアイコンをタップすると、「タスクスタック」が表示されます。つまり、MainActivityが昼食された場合はそれが表示され、ユーザーがアクティビティBまたはCに移動した場合(または他のアクティビティを昼食した場合)はそれが表示されます(つまり、タスクスタックの最上位のアクティビティを意味します)。問題があります-ユーザーが通知をタップすると、MainActivity(スタックの一番上)が再び表示されますが、タックスタックの一番上にあると思います(アクティビティB、Cまたは他の魔女は最後にユーザーによって昼食されました)。

MainActivity "singleTask"の属性を設定すると、半分が解決します。これは常にタスクスタックのルートですが、すべてのアクティビティ(B、C、およびその他のユーザーが昼食をとっている)を失っています。スタックの最上位でのアクティビティの再利用と同様のソリューションですが、ルートで必要なアクティビティは1つだけです。

たぶん私の論理が間違っていて、この問題を解決するための別の方法が必要です。しかし、アプリケーションアイコンのようにタスクスタック(トップアクティビティ)をプログラムで表示するにはどうすればよいですか?

4

1 に答える 1

0

ドキュメント「タスクとバックスタック」では、ナビゲーションを正しく処理する方法について説明しています。

つまり、ユーザーがナビゲーションをタップしてアプリのアクティビティに移動した場合、[戻る]をクリックすると、ホーム画面に到達するまでアプリのアクティビティ階層に表示されます。彼らは別のタスクでスタックに行くべきではありません。つまり、アクティビティCのアプリにいて、クリックした通知を送信してアクティビティAに移動する場合、[戻る]をクリックすると、CではなくAの親に移動する必要があります。 Cに移動すると、Recentsを使用できます。

古いプラットフォームでは、Recentsは利用できません。

これは仕様によるものです。

適切な合成バックスタックを構築するには、TaskStackBuilderを使用します

于 2012-10-26T23:52:54.977 に答える