2

Application クラスを拡張するクラスがあります。ここに My Application クラスがあります

public class UILApplication extends Application {
public int count_group;
public LoginUserInfo loginUserInfo = new LoginUserInfo();
public  static ArrayList<PostCategory> featuredCategory = new ArrayList<PostCategory>();
public ItemsAllPost selectedPost;

public PostCategory selectedCategory;
public PostCategory selectedSubCategory;
public ArrayList<PostCategory> categoryList = new ArrayList<PostCategory>();
public ArrayList<PostCategory> searchCategoryList = new ArrayList<PostCategory>();
public ArrayList<PostCategory> timePeriod = new ArrayList<PostCategory>();
public ArrayList<PostCategory> tagsList = new ArrayList<PostCategory>();
public ArrayList<ItemsAllPost> featuredPost = new ArrayList<ItemsAllPost>();
public ArrayList<ItemsAllPost> searchList = new ArrayList<ItemsAllPost>();

}

私はそれに多くのデータを保存し、それをさまざまなアクティビティとフラグメントで使用しました

今の問題は、ホームボタンを押してしばらくしてからアプリに戻ると、クラッシュすることです。

アプリケーションを終了するときにこのデータを保存し、アプリケーションに戻ったときにその状態を保持する方法を教えてください。

助けてください。

4

1 に答える 1

2

Application通常、データをクラスに入れるべきではありません。インスタンスの存続期間は、Applicationほとんどの人が想定しているものとは異なり、制御することはできません。その寿命は VM の寿命と同じですが、AFAIK ではこれは文書化されておらず、将来警告なしに変更される可能性があります。

お気づきのApplicationように、アプリがバックグラウンドになるたびにインスタンスが破棄される可能性があります。アクティビティのようなシャットダウン ライフサイクル メソッドApplicationがないか、他のシャットダウン ライフサイクル メソッドがないため、これは通知されません。onSaveInstanceState(...)

すべてのアクティビティが終了しても が破棄されApplicationない可能性もあります。Android は、プロセスと VM を維持することができますApplication。これが発生した場合、次回アプリが起動されたときに再度呼び出されることはありonCreate()ません。

于 2015-08-18T19:10:51.050 に答える