2010-08-02 27 views
2

我有一個小部件,顯示了一些從Internet獲取的數據。我可能會在屏幕上顯示多個小部件,每個小部件顯示一些數據,部分與其他小部件相同。AppWidgetProvider的模型

我經常從互聯網上重新獲取數據並更新小部件視圖。

我已經在MVC風格中對此進行了建模:我有一個模型,可以調用「重新獲取數據」,以及視圖在哪個模型上進行監聽。

我的問題:

A)它是明智的,讓我的模型是一個單身?

B)我可以依靠所有小部件由同一個AppWidgetProvider服務嗎?或者,我的一些小部件可能由不同的AppWidgetProvider實例提供服務?或者更一般地說:有沒有保證只有一個我的AppWidgetProvider實例?

如果我的AppWidgetProvider只有一個實例,那麼我可以在這裏爲模型使用一個實例變量,並在需要的地方傳遞我的AppWidgetProvider或模型。也許更好的選擇?

C)在AppWidgetProviders onUpdate方法中,我可以確定每次調用都傳遞相同的「上下文」對象作爲參數嗎?

回答

2

是否明智,讓我的模型是一個 單身?

考慮到你不能在AppWidgetProvider有靜態數據,我會說一個單身是非常不安全的。您需要使用持久存儲,例如文件或數據庫。

我可以依靠所有小部件是由同一個AppWidgetProvider服務的 嗎?

這將是同一班。最肯定的是will not be the same instance,除非你正在做一些非常邪惡的東西,比如試圖獲得永久的服務。

或者可能我的一些小部件的話,被不同的AppWidgetProvider 實例服務 ?

是的。

或者更一般地說:是否有任何保證只有一個我的AppWidgetProvider實例?

有保證會有只有一個你AppWidgetProvider的實例。"If this BroadcastReceiver was launched through a tag, then the object is no longer alive after returning from this function."

在AppWidgetProviders的onUpdate 方法,我可以肯定的是相同 「上下文」對象被作爲參數 每個調用通過?

我不認爲這是一個安全的假設。

+0

哇。很好的答案。我有一些嚴重的重構! – aioobe 2010-08-02 23:15:21

相關問題