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

広告:超オススメUnity Asset
  広告:超オススメUnity Asset

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()を任意のタイミングで動作させる事によって強制終了の可能性を低下させることができるかもしれません。お試しを。