ページ 11

AndroidのContextについての疑問

Posted: 2014年11月26日(水) 16:23
by LL
お久しぶりですLLです。
現在AndroidでOpenGLESを触っています。Canvasを触ったときもそうだったのですが結構Cotnextを使う機会が多いのでいっそのことグローバルクラスに格納でもして簡単にアクセス出きるようにしようかと思っています。
そしてContextについていろいろ調べてみたのですが、どうやらActivityとApplicationの二つのContextがあるみたいです(中身は一緒らしいですが動作はいくつか異なる模様です(Activityの方は破棄される可能性があったり))
参考↓
http://individualmemo.blog104.fc2.com/b ... ry-41.html
そこで疑問なのですが、
『グローバルでContextを保持させるとしたらActivity(this)か、ApplicationのどっちのContextを保持した方がいいでしょうか?』
また
『Contextをグローバルで保持させても問題無いでしょうか?』

よろしくお願いします。
以下参考サイト
http://mitoroid.com/category/android/an ... ontext.php
http://yuki312.blogspot.jp/2012/02/this ... pplic.html

Re: AndroidのContextについての疑問

Posted: 2014年11月26日(水) 20:50
by softya(ソフト屋)
画面と結びついているならActivityのContextじゃないと意味がいないんじゃないでしょうか? これは永続化させるとライフサイクルで支障が出ます。
ファイルとかアプリの寿命と同じで良いのなら、その用途のApplication Contextは永続化でも良いと思いますが。

Re: AndroidのContextについての疑問

Posted: 2014年11月27日(木) 13:46
by LL
softyaさんご返信ありがとうございます。
ActivityとApplicationのContextは同じだと記述されていてもやはり細部で違いがあるんですね。
永続か一時かで違いがあるのだとしたらやはり、そのアクティビティ中で読み込む画像リソースがContextの主な使用目的なのでActivityのContextをグローバルで持たせてみようかと思います。
まぁ、OpenGLとAndroidのライフサイクルを勘違いした結果、誤った設計してしまったために大規模な修正(と言うかほぼ作り直し)になってしまったのでこの結果を生かせるのは相当先になりそうですが・・・
(AndroidのSurfaceViewのような感覚で独立したスレッドクラスを作り、そこでグローバル化したGLコンテキストを使ってリソースを読み込もうとした結果、GLコンテキストの生成より先にその読み込みメソッドを通ってしまったために必ずNullPointerExceptionを起こすような物が出来ました・・・よくよく参考書を読み返したらスレッドクラスではリソースをいじるようなことは一切せず、座標などの演算処理だけを行っていたのである種の必然的なミスだと思います・・・・ネストネストの繰り返しで半ばカビのような根深いプログラムになってましたし・・・)