2010年12月11日土曜日

RoboGuiceとかちょっと見てみた

いや、本当にまだ見てみただけ
今のところやったこと sampleのAstroboyの全ソース読んだぐらいです。

RoboGuiceのサイト
http://code.google.com/p/roboguice/

RoboGuiceってなーにって人用にちょっとだけ解説ー

一言で言うとandroid用のDIコンテナーです。
DIってなーにっていう方はJavaフレームワーク開発入門とか読んでみましょう。
まだ触るにははやいってことです(いや、僕も今読んでる途中ですけど)

どんなことができるか。
例えばいつもはこんな感じに書くコードを


// こんな感じ
Button myButton = (Button) findViewById(R.id.my_button);
次のような感じに書けます。

@InjectResource(R.id.my_button)
Button myButton;

アノテーション書けばかってにキャストして入れてくれるよってことですな。
でもまあ、これだけじゃ別にたいしたことないじゃんってやつですが、

LocationManager mLocationManager = (LocationManager) getSystemService(LOCATION_SERVICE);

とかいうのも
@Inject
LocationManager mLocationManager;


とかやればかってに初期化しといてくれます。
ちょっと便利

ほかにもたとえばIntentで自分がつくったActivityが起動されたときにsetExtra()でくっついてきた値を取るときにこんなふうに書けば取っといてくれます。


@InjectExtra("nameExtra")
protected String nameExtra;
意味はこれ
nameExtra=getIntent().getStringExtra("nameExtra")

あとよくありがちな@Nullableとかもあった。

androidによくあったResourceやIntent連携で起きるデータのやり取りとかのどうしてこうなったwという仕様(キャストが必要とか)をGuiceがやさしくしてくれる感じ

追記:上でやってたことはすべてField変数にたいしてです。

とりあえず見てみただけだからこのへんにしとく
詳しくは上のページにあるsampleのところにあるAstroboyを見るといいと思うのです。
astroboyは一時間もあれば読めると思うですよ(それぐらいRoboGuice君がやさしくしてくれた)

次回のRoboGuiceに関する記事の予定
RoboGuice使ってUnitTestやってみる
(Twitterで@vvakameさんがやれとかいってたので)
もしくは普通に導入手順とか書くかも(あとあと勉強会するときにもう一度調べるのめんどくさいから)

0 件のコメント:

コメントを投稿