は、リスナーを実装するサービスでは、このようなAndroidのコードを考えてみましょう(方位センサーからのイベント):リスナー)が早すぎる問題をoccuring
public void onStateChanged()
{
//do some work
stopSelf();
}
私はサービスがメソッドonStateChanged()
後に死亡したいですトリガーされ、そのコードが実行された後。しかし、あまりにも早く死ぬ - "//do some work"
が発生する前にstopSelf()
が呼び出されています。私がデバッグ中にどこかで中断すると、"//do some work"
すべてが正常に動作します。コードが実行され、サービスが終了します。 stopSelf()
を削除するとコードが実行されます。私がそれを上記の方法で実行すると、"//do some work"
から何もできません。何故ですか?それはどのように可能ですか?
1.これは自分のリスナーで、電話機の向きが変わったかどうかを確認します。リスニングが完了したことを示すイベントを持つ機会はありません。 2.私は多くのロギングを挿入します!デバッグをオンにしない限り、何も記録されず、コードのどこかにブレークを入れます。 – jacek
特有のものです。ここにランダムな考え方があります:変数を作るallDone = false;その後、すべての作業の終わりにallDone = trueと設定します。一方、あなたはstopSelf()の前に "while(!allDone)"というループを使います。私はおそらく道を離れて助けることができません:(あなたがコードを投稿すればもっと手がかりを得るかもしれません... Androidは奇妙なことがあります。 – karnok
これはちょうど私のコードです - "do some work"しかし、私はそれを取り除いて、何か他のものに取り替えることができますが、それでも同じことが起こります... – jacek