2011-01-08 17 views
5

長い時間バックグラウンドでフォアグラウンドに戻った場合を除いて、うまく動作するアプリケーションがあります。システムが自分のアクティビティスタックをクリアしたときに、これがalwaysRetainTaskStateフラグと何か関係があるのだろうかと思います。私はそれを試したいと思いますが、私は毎回30分間座りたくありません。通常のシステム動作を何らかの方法で引き起こす方法はありますか?androidをテストする方法:alwaysRetainTaskState

更新: フラグandroid:clearTaskOnLaunchを設定した場合、アプリケーションを再起動するとalwaysRetainTaskStateと同じことが起こりますか?

答えて

-1

おそらく、それはアプリケーションにデータを保存するためです。多くの時間が経過すると、アプリケーションが強制終了されます(メモリなどのため)。

戻すと、アプリケーションオブジェクトを除くすべてのオブジェクトが復元されます。クラッシュするnullです。

+0

アプリケーションは、確かに正しい用語ではありません。アクティビティはメモリのために終了します。 ANYコンポーネントが存続している限り、アプリケーションは常に有効です。さらに、ユーザーのコードを見ておらず、必ずしも有効ではないと仮定しています。この動作は、Applicatioオブジェクトに情報がない場合には確実に発生します。最後に、OPの質問には何ら言及していません。 OPはフラグをテストしたい。 –

3

通常のシステム動作を何らかの方法で引き起こす方法はありますか?

alwaysRetainTaskStateをテストする最も簡単な方法は、アクティビティを終了して、1トンのメモリを使用する複数のアプリケーション(順番に1つずつ)を起動することです。その反復性はかなり信頼できます。私が適切なアプリケーションを選んだら、約40秒後に私のGalaxy S-IIで1つ起動することができます。

私はこのフラッグをテストするための直接的な方法がないことを知っています。

フラグandroid:clearTaskOnLaunchを設定した場合、アプリケーションを再起動すると、alwaysRetainTaskStateと同じことが実行されますか?

絶対にありません。 ClearTaskOnLaunchは基本的に、あなたのアプリがルートアクティビティに戻ることを意味します。他のすべてのアクティビティはアクティビティスタックから削除されます。つまり、アクティビティが子アクティビティに依存してコンテンツを配信する場合、そのアクティビティはすべて失われます。つまり、ユーザーはアプリケーションのアクティビティスタックの初期状態に戻ります。 の状態を維持することがあります。アクティビティはalwaysRetainTaskStateフラグに依存します。

追加情報

alwaysRetainTaskStateは、あなたのルートアクティビティでのみ有効です。その基本的な目的は、それと他のすべてのアクティビティを長期間生き続けることです。これらのアクティビティに直接結び付けられていないオブジェクトはすべて流動的であり、破棄することができます。多くの場合、alwaysRetainTaskStateが機能しない場合は、コードが手動で参照を削除しているためです(通常、onPause()などのイベントへの応答)。