1

しばらくの間、サービスの 1 つで発生している ANR と戦っています。再現するのは非常に難しく、UI は 100% 発生する直前に完全な機能を備えているように見え、顕著な遅延やフリーズは発生しません。私のサービスには TimerTask とそれが実行するいくつかの AsyncTask があり、それだけです。

2.2 の Android マーケットで報告したときに取得するスタック トレースは読みにくく、コードへの直接の参照はなく、SDK のクラスからのみ参照されているようです。誰でもスタックトレースを見て、何が起こっているのかわかるかどうかを確認できますか.

印刷物が大きすぎるので、ペーストビンに投稿することにしました。ルールに違反していないことを願っています。 http://pastebin.com/KHUD0UHW

ここにもLogcatログがあります http://pastebin.com/V5xSey36

4

1 に答える 1

5

アプリのせいではない可能性があります。「現在の」アプリが何であれ、ANRが表示されます。ただし、システム上の別のアプリが実際にCPUを取り出して、アプリを強制的に飢餓状態にした場合、アプリはユーザーに焦点を合わせているため、ANRを取得します。それが状況なら、あなたにできることは何もありません。おそらく、これをテストする最良の方法は、システムに同期を監視または強制することです。同期は通常、電話ではかなり重いため、性能の低い電話では遅延が発生する可能性があります。

遅い電話を持っているかどうかをテストする別の方法は、市場から大きなアプリをインストールすることです。ダウンロード後に「インストール」フェーズに入ったら、アプリで少し集中的に何かを行います。インストールフェーズに5秒ほどかかる場合は、アプリにANRを取得させるかなりのチャンスがあります。これは、アプリのインストール中のIO速度が悪いためです。IOは、他のアプリがCPU時間を取得するのをブロックします。Androidは、それがあなたがそれを盗んでいることを意味すると考えています。

于 2010-09-21T05:16:53.220 に答える