コンテンツが巨大化してアプリがよく落ちるようになった場合 [AIR for Android / AIR for iOS]

スポンサーリンク

Flash Pro CS5.5 でオーサリングした場合、コンテンツが巨大化してくると、AIR for Android / AIR for iOSアプリ が(デバイス上において)頻繁に強制終了しまう事があったりします。

原因がメモリリークと考えられるような場合(必ずしも毎回同じタイミングで落ちるのではなく、アプリを普通に使っているとよく落ちる、といったケースなど)は、頻繁に実行されているaddEventListenerを探して、第五引数をtrueにしてみましょう。


myTimer.addEventListener(TimerEvent.TIMER, onTimer, false, 0, true)

指定なしの状態(デフォルト)では、false なのですが、trueにすることによってガベージコレクション動作時に解放されるようになるようです。

System.gc() することでガベージコレクションを任意のタイミングで動作させることができるようですが、この記事にも書いたように、(細かな検証を行っていませんが)AIR for Android、AIR for iOS上のアプリでも動作させることができるようです。

なので、addEventListenerの第五引数をtrueにする事(頻繁なものだけでいいと思います)と、System.gc()を任意のタイミングで動作させる事によって強制終了の可能性を低下させることができるかもしれません。お試しを。

東京造形大学卒業後、マクロメディア(現アドビ システムズ)に入社。Quality AssuranceやテクニカルサポートマネージャーとしてFlash、DreamweaverなどのWeb製品を担当。独立後、虫カゴデザインスタジオ株式会社を設立。最近は、ZBrush、Xcode(Swift)、Firebase、Unity、Adobe Creative Cloud関連にフォーカスしています。。モバイルアプリ開発情報を主としたブログ「MUSHIKAGO APPS MEMO」の中の人。