0

Dalvik Debug Monitor Service (16.0.1) を含む Android Development Toolkit (16.0.1) を使用して Eclipse (3.7.2) をセットアップしました。

ランチャー アクティビティを使用して「標準」の Android アプリケーションを作成すると、コードにブレークポイントを設定し、それを仮想 Android デバイスで実行すると、期待どおりにブレーク ポイントが壊れます。私が欲しい。

問題は、「標準の」Android アプリケーションの代わりに、ランチャー アクティビティを持たない Android ホーム画面ウィジェットをいじり始めると発生します。コードをデバッグしたい場合でも、ブレークポイントを簡単に設定できます。AppWidgetProvider の実装の onUpdate に直接ブレークポイントを設定し、ウィジェットのインスタンスを AVD に追加してテストするとします。ブレークポイントは壊れません。これは、デバッグ構成では、選択できるアクティビティがないため、ウィジェットの起動アクションが「何もしない」であるためだと思います。

グーグルで調べてみると、AVD の実行中に Eclipse の DDMS ビューに移動し、その [デバイス] タブでウィジェット プロセスを選択して、かわいい緑色のバグの [選択したプロセスをデバッグ] をクリックできることがわかりました。その後、AVD でウィジェットのインスタンスを作成すると、ブレークポイントで実行が中断されます。

しかし、ここで次の問題が発生します。これが発生すると、Android がウィジェット プロセスがハングした (これは正しい) と判断し、実行する必要がある (これは正しくない) と判断するまでに、デバッガーに約数秒かかります。したがって、私の質問は次のとおりです。システムがブレークポイントで停止したプロセスを撃たないようにするにはどうすればよいですか?

注: ログには、次のような通知が表示されます。

06-11 17:02:19.900: W/ActivityManager(59): Scheduling restart of crashed service [...]
4

1 に答える 1

1

メイン スレッドで実行されないサービス ( などIntentServcie) をウィジェット レシーバー ( onUpdate()) から開始します。そこですべての作業を行ってください。

于 2012-06-21T07:35:53.937 に答える