2011-04-29 52 views
4

我正在創建一個小部件,我需要爲它存儲一些數據。我沒有與小部件Activity,所以我不能利用SharedPreferences。我存儲的數據非常少,但頻繁訪問,因此使用數據庫將會過度。我曾想過使用簡單的文件,但這似乎不是一個好的解決方案。有什麼方法可以存儲小部件的簡單數據嗎?如何存儲小部件的數據?

回答

3

您不需要Activity來存儲首選項,只需Context。在您的班級中,延伸AppWidgetProvider,您應該收到所有相關方法的上下文,如onUpdateonDeleted

然後可以使用PreferenceManager獲得優先對象,並保存您在它需要的東西,比如這個:

@Override 
public void onUpdate(Context context, AppWidgetManager appWidgetManager, 
    int[] appWidgetIds) 
{ 
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); 
    String value = prefs.getString("key-string", null); 
    if(value != null) 
    { 
     // do stuff 
    } 
} 

作爲一個側面說明,你提到,你考慮過使用的文件,但不希望出於性能原因。 SharedPreferences對象實際上最終使用簡單的文件,它們只是由Android爲您管理。如果您要經常訪問它,您仍然需要注意性能。對於SQLite數據庫也是如此,因爲這些文件也只是文件。

0

那些常規的Widget方法包含上下文是真實的,但如果這些上下文改變呢? 對於例如一個應用程序調用一個動作,該動作使用onReceive監聽小部件,並使用該上下文保存數據,並可以通過其他應用程序動作讀取它。 - 其他上下文。

如果將覆蓋應用程序並得到它會怎麼樣? - 活動作品,不確定小部件!