0
注意:這全部在我的AppWidgetProvider的updateAppWidget()中。像這樣「循環」postDelayed()會發生什麼問題嗎?
我試圖讓我的小部件永遠在兩種顏色之間來回閃爍。這是通過讓延遲的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);
其餘的重寫方法不變。