對於Android的AppWidget機器如何工作,我感到不知所措。爲什麼每次添加應用程序小部件時都會創建AppWidgetProvider?
我重新實現了的AppWidgetProvider的構造是這樣的:
public class MyProvider extends AppWidgetProvider {
public MyProvider() {
Log.d("TEST", "Creating...")
}
public void onUpdate(..., int[] appWidgetIds) {
// updating stuff here
}
}
從我的文檔讀過,我明白的AppWidgetProvider被實例化一次,當添加首次這種類型的部件。如果類型的另一個小部件相同類型被添加,它將由該提供者管理。
但我剛發現情況並非如此!我創建了一個新的MyProvider(我從'adb logcat'中看到 - 它爲每個部件打印「Creating ...」)! 我不小心爲什麼:) 也許我有什麼問題?或者文件不清楚的東西。 如果每個供應商只管理一個小部件,appWidgetId傳遞給 onUpdate和其他方法的原因是什麼?
我相信AppWidgetManager被實例化一次,AppWidgetProvider會爲每個添加的小部件實例創建。您在文檔中的哪裏看到應用程序小部件提供程序僅創建一次,我無法在其中找到該信息? – 2010-07-14 13:56:49
我只是假設,因爲我看到了appWidgetIds參數:) 我認爲「如果它總是等於1,它有什麼意義」。 謝謝。還請看下面的答案,夥計們是對的 – dimsuz 2010-07-15 08:08:00