バックグラウンド サービスを使用する Android アプリケーションを開発しています。私は Android アプリケーション開発の経験があまりなく、これが初めてのアプリケーションです。私は数多くのアルファ版を作成してきましたが、最近コードを大幅に変更し、アプリケーションをアンインストールしようとするとフリーズする問題が発生しました。この問題は以前のバージョンでは発生しなかったため、何か変更したことが原因であると思われます。バージョンの変更後、sqlite データベースを使用してデータの一部を保存しています。テーブルはそれほど大きくなく、最大で約 5 行しかありませんが、約 5 または 6 列あります。同じサイズの 2 つのデータベースを使用しています。以前のバージョンと現在のバージョンの両方で
私は 3 つの異なる電話でテストしました。Nexus S、Samsung Galaxy S II (I9100)、Samsung Galaxy Mini (S5570)。すべての電話で問題なく動作しますが、Galaxy Mini でアプリケーションをアンインストールしようとすると、電話にプログレス バーのあるアンインストール画面が表示され、フリーズします。画面がオフになり、どのボタンにも反応しません。しばらく待つと、再起動しているように Samsung のロゴが表示されますが、実際には再起動しません。その画面から抜け出す唯一の方法は、電源ボタンを長押しして強制的に電源を切るか、バッテリーを取り外して電話を再起動することです。
この問題は他の電話では発生しないため、メモリまたは CPU の問題であると思われます。logcat を観察してこの問題を診断しようとしましたが、致命的なエラー メッセージは表示されません。サイズが大きい他の有名なアプリケーションを市場にインストールして問題を再現しようとしましたが、フリーズせずにアンインストールされるため、フリーズを引き起こしているのは私のアプリケーションであると確信しています。
これに関するヘルプや情報をいただければ幸いです。アプリケーションにいくつかのメモリ リークがあることを確認し、それを削除しようとしていますが、アンインストール中にフリーズが発生する原因がわかりません。電話のメモリを確認すると、内部メモリに 120MB 以上の空き容量があり、外部メモリは使用していません。私が気づいたのは、CPU使用率です。SystemPanel アプリケーションを使用して CPU クロックとメモリを監視したところ、Galaxy mini の CPU クロックの割合が非常に高いことがわかりました。
私のとりとめのない話を要約すると、
問題:アプリケーションをアンインストールしようとすると、Galaxy Mini フォンがフリーズします。この問題は、Galaxy Mini (3 台の電話のうち) でのみ発生し、私のアプリケーションでのみ発生します。
原因の私の推測:
バックグラウンド サービスがまだ実行されていて、アンインストールと衝突します (可能性が高いように聞こえますが、これは以前のバージョンでは発生しませんでした)。
アプリケーション ファイルの削除には時間がかかり、Galaxy Mini CPU には負担がかかりすぎます (アプリの最大サイズが 5MB 未満であるため、可能性は低いと思われます。サイズが約 25MB 以上の Angry Birds をアンインストールしようとしました)。
私のアプリケーションはメモリ リークが多すぎて、すべてのヒープ メモリを使い果たし、常に GC をトリガーします。また、Galaxy Mini は Froyo であるため、電話全体がフリーズし、どこかで動かなくなってしまいます (可能性が高いように聞こえますが、アプリケーションは実際に実行されています)
私が持っている電話は安っぽく、私のアプリケーションを嫌っています (可能性は低いですが可能です)。
かなり長い投稿をお読みいただきありがとうございます。この問題の考えられる原因、または考えられる解決策について、ご意見やご提案をいただければ幸いです。