コンテントヘッダー

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
コンテントヘッダー

Androidのメモリ節約術?Javaのお話し

さてさて題名の通りですが、自己満足な部分がちょっとあります。

Androidってみなさんご存じのとおり、携帯端末なので性能がパソコンの様に高いわけではありませんよね?
そんな中で動かしているわけなので、当然そこら辺を意識せずにプログラミングしてたら重くなっちゃいます。

そこで、動きを軽くしたくて調べると、メモリーリークの話とか出てきますよね?
でも実際の例がのっている所があまりないですよね。私も実例を探しによくGoogleさんを使っていたんですけど、メモリーリークの話ばかりで、全然ありませんでした。

そこで今回は私の例(正しいかは不明ですが)をメモしておきます。
*Javaを初めてわずかなので常識だったらすみません(

ここからメモ。

たとえば、レイアウト上のTextViewTypeface(オリジナルフォント)をセットしたい場合。

Typeface typeface = Typeface.createFromAsset(this.getAssets(), "ファイル名.ttf");

TextView text = (TextView)findViewById(R.id.textview_id);
text.setTypeface(typeface);

としますよね?
ですが、これ、ただTypefaceをセットするだけとかだとtextというオブジェクトがメモリを食ってもったいない気がします。私だけかな?(笑

そこで1,2回しか処理を加えない場合とかはこうゆう書き方も出来ます。
((TextView)findViewById(R.id.textview_id)).setTypeface(Typeface.createFromAsset(this.getAssets(), "Assetのファイル名.ttf"));

最初の書き方だと typeface というオブジェクトと text というオブジェクトの2つが生成されます。
ですが、今書いたやり方だとオブジェクトは生成されません。(メモリも少し軽い気がします。

なぜこんなことが出来るかというと、Javaでは(TextView)findViewById(R.id.text_id);
ピンクの所の部分でIdで検索したオブジェクトをTextViewという型に変換しているのです。
なのでそれら全体を()で囲うことで、一時的にオブジェクト化?出来ちゃうらしいのです。

Androidでは余計なオブジェクトの生成は避けるべきなのでこうゆう書き方もあることを覚えておいたほうが良さそうです。

*これはあくまで私の経験談ですが、正しいかは怪しいので、プロの方がいたら詳しく教えていただけると嬉しいです。
スポンサーサイト
コンテントヘッダー

コメントの投稿

非公開コメント

プロフィール

Lilse_n_d

Author:Lilse_n_d
JavaとAndroid開発を初めて3か月ちょっと。
知識も経験もないですが、必死にもがいてみようと思います(笑)
それではよろしくお願いします。

検索フォーム
最新記事
最新コメント
最新トラックバック
カテゴリ
リンク
QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。