2012-01-06 18 views
0

私はウィジェットにダウンタイムをカウントしています。 これはメインのホーム画面にあり、ホーム画面にある間はうまくいくように見えますが、 ただし、もう一度別の画面に切り替えてからHOMEに戻ると、ウィジェットが遅れて開始します。Androidウィジェットが表示されていないときに更新されない

私が他の画面にいる間に更新が行われないようですが、時間が更新されていないため、カウントダウン時間を計算するすべての更新がすべて実行されているためです。これは遅れを引き起こし、短い電話が凍結する(これは毎分更新を呼び出すときにこれを行う)。場合は、それぞれの秒を更新したい場合は、画面のロック時間やその他のフォーカスが外れて約20分後に完全にフリーズします。

質問:画面に表示されているかどうかにかかわらず、ウィジェットに更新を続行するよう暗に伝えることはできますか?それ以外はどうすればこの問題を解決できますか?

+0

ビューのフォーカスが合っていない時間をどのように確保していますか。 –

+0

実際には、それが焦点に達した後、それが逃したすべての更新を呼び出すように見えるだけでなく、1つ(最後) –

+0

私はあなたがウィジェットがフォーカスを外してフォーカスに戻ったときのシステム時刻、少しの数学をしてそのような時間を得る...そのちょっとしたアイデアや、詳細や方法についてはわからないコードは同じように見えますが、常にバックグラウンドでインクリメンタルな更新を使用する必要がなくなります。 –

答えて

0

View.OnFocusChangeListener

イムあなたのウィジェットに焦点が合っているかいないかどうかを監視するためにこれを使用することができます推測。 google docsでそれをチェックしてください。私はまだそれを使用する必要があるので、それは動作するとは思っていませんが、試してみる価値があります。

http://developer.android.com/reference/android/view/View.OnFocusChangeListener.html 
0

悪い全体的なデザインです - あなたは、各「チック」をカウントし、それはその時に起こっていなければならない場合、サービスは、おそらく仕事を行うための最善のもので、ちょうどウィジェットがどのようなサービスを依頼してい表示されるはずです。

しかし、あなたは何かひどい電池を吸うつもりです。それは本当に各ティックで何かをする必要がありますか、または最後のドロータイムを保存し、現在の時間を見つけて、それに応じて更新し、間にあるすべてのティックをスキップしますか?

そして、ゼロになると何かが起きる必要がある場合は、アンドロイドのアラームシステムを試してみてください。あなたは、あなたのユーザーのバッテリー寿命とCPUを別のやり方でやっているほうがはるかに良いでしょう。

0

あなたがそうしているかどうかはわかりませんが、AlarmManagerクラスを使用してウィジェットを更新する必要があります。遅延の原因となるスレッドや何かを使用しないでください。 私はそれを使用し、それは私のために働いた。 See this

関連する問題