A
何も拡張しないという抽象クラス内から共有設定への参照を取得する必要があります。
Context
抽象的であるため、インスタンス化しないため、オブジェクトをこのクラスに渡して共有設定を取得することはできません。A
単一の属性(。)を共有する他のPOJOによって拡張されるクラスを作成しましたuuid
。UUIDは、最初の実行時にアプリで1回生成されるため、共有設定に保存します。クラスのコンストラクターでは、共有設定にあるものに基づいてA
を設定したいと思っています。uuid
public abstract class A {
private String uuid;
public A() {
// this is how I'm hoping to use the shared preferences
this.uuid = sharedPrefs.getString("KEY_UUID", "null");
}
// getter and setter
}
私が見つけた1つの提案Application
は、たとえば、というクラスで拡張し、マニフェストのタグにApp
属性を含めることです。私は次のように書かれると思います:android:name=".App"
<application>
App
public class App extends Application {
private static App app;
public void onCreate() {
this.app = this;
}
public static App getApp() {
return app;
}
}
...クラス内からA
、これを行うことができます:
this.uuid = App.getApp().getSharedPreferences("prefs_name.txt", Context.MODE_PRIVATE).getString("KEY_UUID", "null");
ただし、 Androidがプロセスを強制終了したとき、または電話が再起動したときに、非最終静的フィールドapp
はへの参照を失い、 nullになりませんか?App
このメソッドを使用せずに共有設定への参照を取得するにはどうすればよいですか?または、UUIDをファイルに手動で書き込む必要がありますか?