2011-01-11 6 views
4

私が基本的にやっていることは、自分のアクティビティのインスタンスを別のオブジェクトに渡して動的UIを構築することです。アクティビティのインスタンスを別のオブジェクトに渡すことは安全ですか?

私がこれをやっている主要な理由は、アクティビティクラスをきれいに保つことです。

これを行うときに何か影響がありますか?ガベージコレクションに影響を及ぼし、メモリリークを引き起こしますか?

アクティビティー:

/* uses the instance of the Activity to build Views which are loaded from XML files (for non technical users to add content */ 
ContentHelper ch = new ContentHelper(MyActivity.this); 

は私が活動内の動的ビュー建物を維持すべきか、それが他のクラスにインスタンスを渡す大丈夫です。ここ

は私がやっているものの一例ですこれをする?

私がアクティビティに残しておけば、私は肥大化し、管理するのがはるかに難しいと感じます。

答えて

3

私の意見では、ACTIVITYをどこかに渡すのは良い考えではありません。実際には、これが何かを行うかどうかはわかりません。あなたは何ができるか

は次のとおりです。

1 - あなたはそこにあなたのUIを構築し、Viewクラスを拡張し、独自のクラスを作成することができます。 あなたがそのクラスに渡す必要があるのはあなたの活動のコンテキストです!例えば

:あなたは「UIクラスの

public myActivity extends Activity{ 
    @Override 
public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 

    myView = new Custom_UI_Builder(this); 

      //what every else you need... 

     mainLayout = new LinearLayout(this.getApplicationContext()); 
    mainLParam = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); 
    mainLayout.setLayoutParams(mainLParam); 
    mainLayout.setOrientation(LinearLayout.VERTICAL); 
      mainLayout.addView(myView, LayoutParams.MATCH_PARENT, 390); 
    setContentView(mainLayout); 

}} 

2を使用して活動中

class Custom_UI_Builder extends View { 
    public Custom_UI_Builder(Context cxt) { 
     super(cxt); 
     // more stuff - your UI components... 
    } 
} 

- 次に、あなたがあなたの活動にごcustom_UI_builderクラスのインスタンスを作成することができます。

これがメモリ負荷に望ましくない影響を与えるかどうかはわかりません。

うまくいきますように!

+0

私はあなたがどこに行くのか見ていますが、それは私がやっていることとほぼ同じですが、あなたのクラスでビューを拡張していることを除けば、あなたはまだアクティビティのインスタンスを渡していますが、それは私の懸念です。問題は、インスタンスを渡すことが大丈夫かどうかでした。それはメモリと設計の問題です... – xil3

+0

はい - コンテキストを渡すのは問題ありません。これは、オブジェクトに渡すか、this.getApplicationContext()の結果を渡すことによって実行できます。メモリとデザインに関しては大丈夫だと思います。それを他の方法で渡すことはできません。私はあなたを誤解していないことを願っています。ここでも同じことが行われています - http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/TouchPaint.html – karla

+0

私はあなたは言った(今のところ)。 LinearLayoutを拡張し、そのカスタムビュー内のすべてのダイナミックビューを構築して、アクティビティを介してメインビューに追加します。 – xil3