1

解決策が見つからないアクティビティ スタックに関する厄介な問題があります。

基本的に、「スターター」アクティビティとして機能するアクティビティがあります(マニフェストのメインアクティビティ、これはランチャーなどから開始されます)。半透明で、次を使用して設定します。

android:theme="@android:style/Theme.Translucent.NoTitleBar"

それが行うことは、それに供給されるインテントをチェックすることです。インテント データが空の場合、アプリのメイン アクティビティである新しいアクティビティが開始されます。

インテント データに特定のコマンドが含まれている場合、スターター アクティビティは特定のタスクを実行して終了し、メイン アクティビティを開始することさえしません。したがって、これは UI なしで発生するはずです (完了時のポップアップ メッセージを除く)。

私の問題は、メイン アクティビティが開始された場合に、ユーザーがホーム ボタンを使用して終了すると、次にコマンドでスターター アクティビティが開始されたときに、メイン アクティビティも短時間表示されることです。

この場合、スターター アクティビティからメイン アクティビティを再開していないため、これはアクティビティ スタックが原因であると想定しています。

さまざまな解決策を試しましたが、役に立ちませんでした。onPause または onStop のメイン アクティビティで finish() を使用することはできません。これは、たとえばユーザーが設定アクティビティに入り、それが望ましくない動作である場合にもアクティビティを終了するためです。スターターアクティビティを再起動するバリエーションも試しました

インテント.setFlags(インテント.FLAG_ACTIVITY_CLEAR_TOP | インテント.FLAG_ACTIVITY_NEW_TASK);

しかし、それもうまくいかないようです。

奇妙なことに、この望ましくない動作が発生すると、メイン アクティビティで onCreate/onResume/onStart が呼び出されません。それでもそれは示しています!これは、スタックされているためであり、起動アクティビティが半透明であるため、メインのアクティビティが透けて見えるためだと思います。

4

1 に答える 1

0

マニフェスト内のアクティビティで属性を有効にandroid:noHistoryします。

<activity
    ...
    android:noHistory="true">
    ...
</activity>

これにより、アクティビティが次のアクティビティを開始するときにアクティビティ スタックから削除されるように設定されます。ユーザーは、 を持つアクティビティに戻ることができなくなりますandroid:noHistory="true"

見る:

于 2013-09-14T08:11:39.617 に答える