この例から試しました https://stackoverflow.com/a/9472019/485978
私はサービスを持っています。このサービスはデータベースに直接接続するだけで、すべてのデータをこのクラス内にある Bean に入れます。
public class ServiceApplication extends Application {
private static ServiceApplication mInstance;
public ServiceApplication() {
super();
}
public static ServiceApplication getInstance() {
return mInstance;
}
@Override
public void onCreate() {
super.onCreate();
mInstance = this;
}
private Person personalData;
public Person getPersonalData() {
return personalData;
}
public void setPersonalData(Person personalData) {
this.personalData = personalData;
}
}
データベースからデータを取得するとき、AsyncTask を使用しました。ここで、doBackground() でこれがコードです
ServiceApplication.getInstance().setPersonalData(personalData);
Log.d("AndroidService", "First name: "+ ServiceApplication.getInstance().getPersonalData().getFirstName());
これまでのところ、First Name を取得できます。
ただし、別のアクティビティからこれらのデータにアクセスしようとすると、null が返されます。
2つの方法を試しましたが、nullが生成されます
最初の実装:
ServiceApplication app = (ServiceApplication) getApplication();
String name = (app.getPersonalData() != null) ? app.getPersonalData().getFirstName().trim() : "user";
2 番目の実装:
String name = (ServiceApplication.getInstance().getPersonalData() != null) ? ServiceApplication.getInstance().getPersonalData().getFirstName().trim() : "user";
データを永続化する方法と、他のアクティビティからデータを取得する方法はありませんか?