2013年1月14日月曜日

Contextとは(getApplicationContext(),Activity,getApplication)


トーストやボタンやラベル生成時、intentの際にもに用いる

getApplicationContext()
getApplication()
this

①Toast.makeText(getApplicationContext(), aItems[result_item], Toast.LENGTH_LONG).show();
②Button button = new Button(getApplication());
③Intent intent = new Intent(this, SubActivity.class);  

自分が過去に紹介したソースでも
上記のように使用しております。

使いわけをしているかと言われると。。。。


特にしていなくてですね。。。


過去ソースを見ても、
見事に3つをランダムに万遍なく用いています。。。。。
JAVAのランダム係数よりも見事なランダム具合!!


気持ちはgetApplicationContext()を使おうとは思っているのですが。。
そんなことは有りませんでした。。


そこで、Contextについて調べたところ、

Contextを用いると、アプリの外部情報を参照できるようです。

パーミッションやResフォルダー内の画像などのリソース
リリース情報などなど。。。

参照元はこちら
http://developer.android.com/intl/ja/reference/android/content/Context.html


あっ、英語のサイトなので、

英語がわからない人には難しいですので、
気を付けてください。

ついでにですが、
自分はGoogleの翻訳機能を使っています。
英語はわかりません。


これだけではよくわからないので、

"Context getApplicationContext  Actiityどっち"

とGoogleで検索させていただき、いろいろなサイトを見たところ。。。。。


うーん。よくわからないのです。

Contextの引数は情報が多すぎてメモリーリークを引き起こす事が
よくあるらしいです。。
それを防止するためにも引数は必要最低現の情報のみ渡すべき。と

thisはそのプロジェクト情報
getApplicationContext()はそこのActivity情報
という認識です。


で、結局上記の3つどのような場面でどれを選ぶのが適切なのか?



ちょっと、わかりませんでした。。。

いや、恥ずかしい。。


とりあえず、どれでもよさそうなので、
情報量が少ない
getApplicationContext()

を使っていこうと思います。


文字列長いし
難しそうだし


共有①
・RadioButton生成時にgetAppliationContext()を渡したら、setTextで渡した文字列が
画面に表示されなかった。getTextすると文字列をしゅとくできたけど。。。。

0 件のコメント:

コメントを投稿