スケジュールされた期間にビューを更新する方法を教えてください。たとえば、毎秒。
MyService.wm.updateViewLayout(mView, mLayoutParams);
私が抱えている問題は、別のスレッドで実行されるタイマーを使用したときに、ビューを更新して次のエラーを発生させることができないことです。
04-08 01:19:35.910: W/dalvikvm(11040): threadid=13: キャッチされない例外で終了するスレッド (group=0x40a3e1f8) 04-08 01:19:35.910: E/AndroidRuntime(11040): 致命的な例外: スレッド-1376 04-08 01:19:35.910: E/AndroidRuntime(11040): android.view.ViewRootImpl$CalledFromWrongThreadException: ビュー階層を作成した元のスレッドのみがそのビューにアクセスできます。04-08 01:19:35.910: E/AndroidRuntime(11040): android.view.ViewRootImpl.checkThread(ViewRootImpl.java:4039) 04-08 01:19:35.910: E/AndroidRuntime(11040): Android. view.ViewRootImpl.requestLayout(ViewRootImpl.java:709) 04-08 01:19:35.910: E/AndroidRuntime(11040): android.view.View.requestLayout(View.java:12680) 04-08 01:19: 35.910: E/AndroidRuntime(11040): android.view.View.setLayoutParams(View.java:8223) 04-08 01:19:35.910: E/AndroidRuntime(11040):
同じアクティビティまたはサービスから更新しようとすると、ハングして他に何もしません。ループで実行しているだけです。
while (true) {
MyService.UpdateLayers();
try {
Thread.sleep(1000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
それで、これを行う正しい方法を教えてください。または、レイヤーを更新するための回避策を教えてください。