2011-11-14 6 views
1

私は、特にAndroidのドキュメントで、この段落について尋ねています:オブジェクトがAndroidのアクティビティ/コンテキストに「結ばれている」とはどういう意味ですか?

あなたが渡したオブジェクトが アクティビティ/コンテキストに結び付け何らかの理由である場合、あなたは 活動のすべてのビューとリソースをリークします。

この段落はFaster Screen Orientationのページにあります。

私は、アクティビティ/コンテキストへの参照を保持するオブジェクトを意味すると仮定します。私のアクティビティでは、onRetainNonConfigurationInstanceでHashMapを返すので、そのHashMap内のオブジェクトのどれもActivity/Contextへの参照を含んでいないので、私は上手だと思います。しかし、私は確信したい。私はまだAndroidでどのようにリークが発生しているかについて学んでいます。

答えて

1

Patrick Dubroyがビデオチュートリアルdoing showing something similarを示しました。その後、彼はその漏れをデバッグするために進む。私はあなたのコードが本当に漏れているかどうかを確認するために同じ手順に従うことができると思います。

オブジェクトがアクティビティまたはコンテキストへの参照を保持していれば、GCがこれらの未使用アクティビティを収集することはできず、したがって巨大なリークが発生します。

0

私はあなたが今までのようにそれほど知っていないかもしれないと警告しています。私はWeakRefタイプが使用されているのを見ていますが、再び私はヌルをチェックしている人がいませんユーザーがシステムの周りの電話を反転させると集めることができます。ちょうどプロセスがダンプされたら〜私が今見ていることから、私たちが知っているように、System.gcは当初コンセプトエディットされていませんハンドヘルドデバイス上で実行されるので、ソースコードと実際にハードウェアで行われていることの間で変換する何らかの種類のシステムテーブルに格納されているポインタは、再入力時にポインタがnew'edになることがあります。しっかりとヒープ・ウォークされていないデータ構造を参照しないよう注意深くコーディングしてテストしてください。

理由がなく、わずか数日前に私はnew Object(){ public methodNamedInAnInterface(){ /* stuff goes here */ }}として何かを書くことになったが、その後、私はそれを "ベストエフォート"と考えた後、私たちが書いたコードからプログラムすることはできない実際にどのように実行されるのかについては、ベンダーのコードショップで行う必要があります。

私は自分のコードで静的なものを使用していますが、プロトタイピング[

私は、このコードがハンドヘルド上で実行されているプログラミングのメンタルモデルに移行していますが、10,000ではなく2番目の制約を要求しています

+2

男、srsly、いくつかの句読点を学ぶ:) –

関連する問題