私のアプリは大きな画像(家の間取り図)を読み込んでから、その画像にタッチ反応性のオブジェクト(家具、ランプなど)を描画しています。アプリにベースイメージファイルが含まれていますが、オブジェクトはデータベースの座標から取得されます。
アプリを複数の反復で正常にデプロイしましたが、より大きなベースイメージを使用する必要があり、多くのデバイスで例外BitmapFactory
が発生OutOfMemory
しています(古いデバイスと新しいデバイスの両方。ヒープが32MB未満のものはクラッシュするようです)。SOに関する157のOOMの質問を読みましたが、解像度/ズームはアプリの機能にとって重要であるため、それらすべてが指していると思われる リンクは役に立たないのではないかと思います。
ロードする前にデバイスの使用可能なメモリをテストしようとしましたが、結果はせいぜいむらがあります(Galaxy S3などの一部のデバイスは大量のヒープを報告しますが、それでもクラッシュします)。解像度を下げてみましたが、上記のテストで安全なサイズに縮小すると画像が使えなくなりました。
ビットマップを使用せずにこのデザインを実装する別の方法はありますか?する必要がある:
- 大きなベースイメージをロードする
- ベース画像の上にクリック可能な形状を作成し、ベース画像に対する位置/スケールを維持します
- ボーナス:iOSバージョンのアプリでは、SVGスタイルのテキストスケーリングを実行できるため、小さなオブジェクトの長いラベルは、マップ上を走る代わりにオブジェクト内に留まります(画像がズームされるまで表示されません)。これをAndroidで複製すると、私は幸せなコードモンキーになります。
必要に応じてコードを投稿できますが、皆さんは以前にそれを見たことがあります(ほとんどすべてがSOからのものです)。
読んでくれて、そしてあなたが与えることができるどんな助けにも前もって感謝します。