3

基本的に、私のアプリはクラッシュし続けます。ただし、すべてのアクティビティには「finish();」があり、アクティビティを終了してメモリを解放する必要があります(少なくともそれは私の理解です)。同じように、私の画像は PNG 形式で保存されている場合でも数百 KB しかありません。

私のコードには、少なくとも Java パッケージ エクスプローラーですぐにエラーが発生することはありません。DDMS では、タイトルに記載されているエラーが表示されます。ここでの質問と回答に従って、プロジェクトの最も論理的な手順に従いましたが、うまくいきませんでした。これまでのところ、画像サイズ (ファイルサイズが小さい) を確認し、finish(); を追加しました。私の活動に。

基本的に、約 10 個のアクティビティを取得すると、クラッシュします。合計で約 60 のアクティビティがあり、それぞれに画像、画像ボタン、およびスクロール テキスト ビューがあります。一時停止して次のアクティビティに進む画像が画面に表示されることがあります。コードを投稿しますが、すぐに関連する、または少なくとも解析できるコードのページはありません。

AVDに関しては、SDカードメモリが少ないミッドレンジですが、ミッドレンジからハイレンジの実際のデバイスでも、アプリには同じ問題があります.

どんな助けでも大歓迎です!

4

1 に答える 1

3

静かな動作をよく見てきました。まず最初に、アクティビティを終了しても、OS がリソースを解放することを必ずしも意味しないことをお伝えします。以前にそのアクティビティを破棄した場合でも、そのアクティビティを再度実行します。さらに多くのアクティビティを開くと、OS は、最新のアクティビティにそれらのリソースが必要になる可能性があるため、以前の「破棄された」アクティビティの一部のリソースを完全に解放することを決定できます。

メモリの問題に関しては、画像のサイズ変更メカニズムに関係しているとほぼ確信しています。アプリケーションに数 KB の画像がある場合でも、適切な drawable-folder に保存されていない場合、それらの画像は数 MB になる可能性があります。 OS は、次の式を使用してアクティビティに適切に収まるようにこれらの画像のサイズを変更しようとします。ヒープが馬鹿げた速さで増加する 1 つのアクティビティ。

問題がサイズ変更メカニズムに関連していないことを確認するには、すべてのドローアブルを drawable-nodpi という名前のフォルダーに入れます (この方法で OS にサイズ変更しないように指示します)。パフォーマンスに大きな違いが見られる場合は、問題は、ドローアブルが各画面密度ごとのサイズで適切に設計されていないことです...

お役に立てれば。

よろしく!

于 2013-09-18T22:44:12.657 に答える