ByteBufferのお話
こないだライフゲームのライブ壁紙を作ってみたんだけど、
最近はNDKを使って、省バッテリー化に取り組みたいなーって思ってて、
そのためにはByteBufferを使う必要がありまして。
という訳で、いきなりNDKのお話をする前にByteBufferの勉強をします。
ByteBufferは、java.nio.Bufferを継承したものなので、
まずはjava.nio.Bufferを確認しなきゃいけなくて、
なんでこんなことを書いているかというと、
お察しの通り、これを確認しないで使ってハマった訳です。
で、注意しなきゃいけない点は以下の通り
- put()するとposition()が変わる
- position()が変わると次のput()先が変わる
うまく説明できないので、C言語で説明します。
unsigned char buf[3] = { 0, 0, 0 }; unsigned char *p = buf; // put()による書き換えのイメージ (*p++) = 1; // buf[0] => 1 (*p++) = 2; // buf[1] => 2 (*p++) = 3; // buf[2] => 3
という訳で、バッファの先頭から書き換えたい場合はrewind()を呼び出して、
position()を巻き戻しましょう。
おしまい。
Leave a Comment