タッチ時にシーンにさまざまなスプライトを表示するゲームを開発しています。各シーンには、ユーザーのアクションに基づいて表示および削除される一連の (約 10 個のスプライト) があります。ユーザーが次のシーンに移動すると、そのシーンのスプライトを読み込み、最初のシーンのスプライトをキャッシュから削除します。シーンの変更時に小さなメモリ リークが発生し、ピンが 1 秒のシーンで作成された TiledTextureRegion 変数を指していることに気付きました。
sprite.reset() 呼び出しを試みましたが、役に立ちませんでした。シーンからスプライトを削除しています。スプライトの削除コードは次のようになります。
private void removeSprite(final AnimatedSprite sprite) {
final PhysicsConnector facePhysicsConnector = this.mPhysicsWorld.getPhysicsConnectorManager().findPhysicsConnectorByShape(sprite);
this.mPhysicsWorld.unregisterPhysicsConnector(facePhysicsConnector);
this.mPhysicsWorld.destroyBody(facePhysicsConnector.getBody());
this.mScene.unregisterTouchArea(sprite);
this.mScene.detachChild(sprite);
System.gc();
}
しかし、スプライトに関連付けられた TiledTextureRegion オブジェクトをクリアしていないようです。アプリにはさまざまなシーンがたくさんあるので、メモリリークが加算されて問題が発生するのではないかと心配しています. どんなアイデアや提案でも大歓迎です。ありがとう!!