2016-10-10 4 views
-2

私のプロジェクトでは、2つの独立したクラスまたは2つのアクティビティの間にいくつかのUIオブジェクト(Textviewなど)を使用する必要があります。Android - 静的UIオブジェクトを使用することの短所は何ですか

この場合、UIオブジェクトを取得するコードを繰り返さないようにするには、代わりに静的UIオブジェクトを使用します。 もちろん、私はアプリのライフサイクルで静的オブジェクトの安全性についても考えています。 しかし、android-static-object-lifecycleの記事は私の疑いを明確にしています。

他のアプリケーションの別のアクティビティに切り替えると静的変数の値は保持され、以下の3つのいずれも発生しません。

1クラスは

2を搬出するJVMプロセスは静的オブジェクトないだけセイフティを使用し、私の意見では

ダイ

3.シャットダウン別のクラスで使用するためのより多くのconvinece;しかし、実際それは他のプロジェクトではめったに見られません。 static UIオブジェクトを使用するのに不利な点はありますか?

各UI要素はcontextが必要になります事前

+0

* UIオブジェクト*を取得するコードを繰り返さないようにするには? textviewインスタンスを必要とするクラスに渡してください。他のクラスもアクティビティであれば、このテキストビューは必要ありません。 –

+0

あなたは正しいです、インスタンスをハンドリングすることができますthis.But多くのUIインスタンスのパスが必要ですが、どうすれば簡単にコード化できますか? –

答えて

2

にこの...おかげであなたの提案を投稿してください。 thisthisがたとえばActivityのサブクラスである)を指定すると、その要素にはあなたのアクティビティへの参照が保持されます。これは、実行インスタンスによってアクティビティインスタンスが再作成される可能性があるため(たとえば、画面が回転している場合など)、悪いことです。その場合、古いインスタンスは、UIエレメントに参照のある(this)ため、ガベージコレクションできないため、メモリに残ります。したがって、UI要素をstatic使用しないことをお勧めします。

+0

あなたのexplain.nowのためにありがとう私はそれが他の活動class.Butで動作することはできません知っているどのようにスレッドで使用する(例えば、私はmapview instacneを持っていると私はスレッドで更新する必要があります)?? –

+0

@ tao.weng MapViewsは重いので、静的にすることを勧めます。あなたは、スレッドとのやりとりの他の方法を調べるべきです(例えば、インターフェイスと言う)。 – Shaishav

関連する問題