5

戻るボタンを押した後にアクティビティの onDestroy() メソッドが呼び出されたときに発生するバグを分析しようとしています。問題のあるコードにブレークポイントを設定しました (Eclipse を使用)。デバッガーはブレークポイントでアプリを一時停止しますが、Android システムもアプリを画面から外し、携帯電話のホーム画面に戻ります。アプリが約 10 秒間一時停止した後、デバッガーが突然切断されるため、アプリのスレッドが Android システムによって破棄されたようです。

Android システムがこれを行わないようにする方法についてのアイデアはありますか? デバッガーにステップインしたり、変数を確認したりできるように、アプリを存続させる必要があります。

電話は Android 2.3.5 を実行しています。

4

2 に答える 2

6

私が見つけた回避策は、アプリを存続させるためだけに、Activity のダミー インスタンスを開始するstartActivity()呼び出しをonDestroy()(before ) に入れることです。super.onDestroy()アプリ スレッド内で実行中のアクティビティ (新しいダミー アクティビティ) がまだ存在するため、Android システムはアプリ スレッドをガベージ コレクションしません。これにより、スレッドへのデバッガーの接続が失われないため、デバッグが可能になります。

アプリが応答していないことを示すダイアログが電話に表示された場合 (強制終了または待機)、[待機] をクリックせず、そのままにしておきます。[待機] をクリックすると、アプリ スレッドが強制終了され、ダミーのアクティビティ用に新しいスレッドが作成されたようです。

于 2012-12-24T18:25:11.177 に答える
0

でブレークポイントを試すことができsuper.onDestroy()ますが、同じ運があると思います。:(

Android では にとどまることはできず、onDestroyタイムアウトになるため、シャットダウンをより迅速に完了するようにしてください。onDestroy()リソースの解放のみを目的としており、終了前に常に呼び出されるわけではありません。onPause()データはまたはに永続化する必要がありますonStop()https://developer.android.com/training/basics/activity-lifecycle/stopping.html

補遺: その他のオプションには、一部の作業にバックグラウンド サービスを使用することや、戻るボタンを手動で処理して時間を確保することが含まれますが、ユーザー エクスペリエンスに悪影響を与える可能性があります。

http://www.stanford.edu/class/cs193a/03/

私の電話から送信されたので、私の親指を少したるませてください。

于 2012-12-20T20:01:19.160 に答える