0
참고 : 이것은 모두 내 AppWidgetProvider의 updateAppWidget()에 있습니다."looping"postDelayed()와 같은 문제가 있습니까?
저는 위젯이 영원히 2 가지 색상으로 앞뒤로 깜박이도록하려고합니다. 이것은 지연된 runnables가 다른 지연된 runnable을 처리기에 게시함으로써 처리됩니다. 핸들러는 다른 처리기를 게시합니다. 그러나 이런 방식으로 잠재적 인 기억 문제가있을 수 있습니까? 위젯은 아무런 문제없이 작동하지만 몇 시간이 지나면 얼어서 얼거나 깜박이기 시작할 수 있습니다. 내 증상 때문에 분명히 이러한 증상이 있습니까? (주로 postDelayed()에서 "this"사용)
final int blinkDelay = 1000;
final Handler myHandler = new Handler();
final Runnable runnable = new Runnable() {
boolean lightOn = true;
public void run() {
if (lightOn){
lightOn = false;
views.setInt(R.id.RelativeLayout1, "setBackgroundColor", Color.argb(150, 255, 248, 231)); //turn light "off"
appWidgetManager.updateAppWidget(appWidgetId, views);
myHandler.postDelayed(this, blinkDelay);
} else{
lightOn = true;
views.setInt(R.id.RelativeLayout1, "setBackgroundColor", Color.argb(220, 255, 248, 231)); //turn light "on"
appWidgetManager.updateAppWidget(appWidgetId, views);
myHandler.postDelayed(this, blinkDelay);
}
}
};
//start the blink loop
myHandler.post(runnable);
나머지 재정의 된 메소드는 변경되지 않습니다.