2014年2月20日木曜日

Android::AudioTrack の play 関数における Memory leak について

Android開発において最も低レベルなオーディオ再生用クラスである AudioTrack

使っている内に,何回も再生 (play()) と停止 (stop(), pause()) を繰り返すと落ちることが分かった.

調査してみると、どうやら play() 実行の度にメモリを消費しているようだ.

また、SoundPool でも同様の症状が起こるらしい (未確認).


解決方法としては,
  1. play() を1回だけ実行
  2. 停止時にリソース解放
が考えられる.

1. に関しては、

1) スレッドを停止,2) ハンドラを利用,3) スレッドを (短時間スリープさせて) ビジーループ

のいずれかを停止の代替手段として実装すればよいはず.

0 件のコメント:

foobar2000でYouTubeの音楽を聞く

foo_youtube: Home インストール方法はこちら:  Foobar2000:How to install a component メリットとしては、 1) foobar 上で Youtube の音楽を聞ける(スペクトラムアナライザーやスペクトログラムを見た...