2011-04-29 48 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 DBの場合も同様です。

0

これらの通常のウィジェットメソッドにはコンテキストが含まれていますが、それらのコンテキストが変更されるとどうなりますか? たとえば、あるアプリがonReceiveでウィジェットを聴くアクションを呼び出し、そのコンテキストでデータを保存すると、他のアプリケーションのアクションでそれを読み取ることができますか? - 他の文脈。

アプリケーションをオーバーライドして取得するとどうなりますか? - アクティビティは動作しているが、ウィジェットについてはわからない!

関連する問題