Androidアプリを開発しているが、なかなか思うようには進みません。プログラミング言語と言えば、FOTRAN,COBOL,PL/I,BASIC,Cなど手がけてきましたが、携帯電話、スマホ用アプリはjavaによるプログラミングが一般的です。Cによる開発がもっとも長く親しみある言語です。自動販売機、コンピュータミシン、パソコン、ワークステーション、汎用コンピュータなどで動作するソフトウェアもCで開発されています。
Javaが動作する機器の機能は大きくなく、バッテリーの消耗を極力おさえるような動きをします。今回、CANVASオブジェクトのBitmapFactory、drawBitmapのAPIでつまずいた例を示します。APIとは共通性のある技術を言語機構側が提供して全体的に効率的に開発できるよう配慮されています。そのおおまかな機能はドキュメント化され公開されていますが、英語版詳細記述は熟読されないことがままあります。失敗例を示します。
処理
① drawBitmapで画像(雲)を描く。
② drawTextで画像に文字(あ)を埋め込む。
③ 上記の表記文字を変更すべく、①の画像(雲)を再描画する。
④ drawTextで異なる文字(い)を画像に埋め込む。
上記の手順で④の文字(い)が表示されると思いきや②と④の文字が二重に表示されました。調べてみると①と③のすべてのAPI引数が同じであるので、③の処理がスキップされるようです。③における第一引数を変更してみたら、期待した動作になりましたので、よけいなお世話ながら負荷のかからない動作になるものと推定します。何事もひと通りの体験が重要なようです。