1

作成するフラグメントに問題があります

Context mContext = getActivity();

ネストされたフラグメント コンストラクターでは、長い間アプリを使用しなかった後、mContext はガベージ コレクションのように見え、アクティビティを再開すると値が null になりました。

フラグメントの onResume に mContext null チェックを入れることを考えていました。これがこのエラーを処理する最善の方法ですか。この問題は複数の場所で発生します。

4

1 に答える 1

0

Activityが表示されない場合、はそのライフサイクルActivityのメソッドに移動し、OS が必要なときにいつでも OS によってガベージ コレクションを実行できます。onStopActivity

Context表示されていない後に依存するべきでActivityはありません。

Contextを再開するときは常に新鮮なものを取得し、そもそも取得すべきでない場合はチェックにActivity頼らないでください;-)NullPointerNullPointer

http://developer.android.com/training/basics/activity-lifecycle/pausing.htmlhttp://developer.android.com/training/basics/activity-lifecycle/stopping.htmlを参照してください。

編集:最後のリンクからの引用:

アクティビティが onStop() メソッドへの呼び出しを受け取ると、アクティビティは表示されなくなり、ユーザーが使用していない間は不要なほぼすべてのリソースを解放する必要があります。アクティビティが停止すると、システム メモリを回復する必要がある場合、システムはインスタンスを破棄する可能性があります。

于 2013-07-02T20:53:26.077 に答える