0

時間をカウントダウンするウィジェットがあります。これはメインのホーム画面にあり、ホーム画面にいる間は正常に動作しているようですが、しばらく別の画面に切り替えてからHOMEに戻ると、ウィジェットが遅れ始めます。

私が他の画面にいる間は更新を行わないようです。時間が更新されていないため、カウントダウン時間を計算してすべての更新をまとめて実行しています。これにより遅延が発生し、短い電話がフリーズします(これは毎分updateに電話をかけると)。毎秒更新したい場合-約20分の画面ロック時間またはその他の焦点が合っていないアクションの後に電話が完全にフリーズします。

質問:画面に表示されているかどうかに関係なく、ウィジェットに更新を続行するように暗黙的に指示できますか?または、この問題を他にどのように解決できますか?

4

3 に答える 3

0

View.OnFocusChangeListener

これを使用して、ウィジェットがフォーカスされているかどうかを監視できると思います。Google ドキュメントで確認してください。私はまだそれを自分で使用していないので、うまくいくかどうかはわかりませんが、試してみる価値は間違いありません.

http://developer.android.com/reference/android/view/View.OnFocusChangeListener.html
于 2012-01-06T23:19:24.790 に答える
0

これは全体的な設計が悪いです。各「ティック」をカウントし、その時点で発生させる必要がある場合は、おそらくサービスが作業を行うのに最適であり、ウィジェットにサービスに何を表示するかを尋ねるだけです。

しかし...あなたはバッテリーをひどく吸うつもりです。各ティックで本当に何かをする必要がありますか?それとも、最後の描画時間を保存し、現在の時間を見つけて、それに応じて更新し、その間のすべてのティックをスキップできますか?

ゼロになったときに何かを起こす必要がある場合は、Android アラーム システムを使用してみてください。ユーザーのバッテリー寿命と CPU が別の方法でそれを行うのに非常に便利です。

于 2012-01-27T13:39:37.677 に答える
0

あなたがそれを行っているかどうかはわかりませんが、AlarmManager クラスを使用してウィジェットを更新する必要があります。遅延を引き起こす可能性のあるスレッドや何かを使用しないでください。私はそれを使用しましたが、私にとってはうまくいきました。これを見る

于 2012-03-14T07:25:59.110 に答える