Android 避免应用程序尝试调用片段';当应用程序被终止时,它的构造函数为空
当活动启动时,是否有方法识别应用程序是否已被终止(例如,由于内存不足),然后避免应用程序尝试使用其空构造函数加载其以前的片段Android 避免应用程序尝试调用片段';当应用程序被终止时,它的构造函数为空,android,android-activity,android-fragments,Android,Android Activity,Android Fragments,当活动启动时,是否有方法识别应用程序是否已被终止(例如,由于内存不足),然后避免应用程序尝试使用其空构造函数加载其以前的片段 我需要具有非空构造函数的片段,并且它们的参数不可序列化(当应用程序在后台运行时,我无法保存它们)。如果应用程序被杀死,我想自己重新创建它,再次创建所有片段,就像应用程序第一次启动一样 有可能吗?我不知道有什么方法可以阻止某个活动重新创建其片段。这并不是说没有这样的机制,但如果有这样的机制,它就不是常用的 但构造函数只是将数据导入对象的一种方式。如果您支持零参数公共构造函数
我需要具有非空构造函数的片段,并且它们的参数不可序列化(当应用程序在后台运行时,我无法保存它们)。如果应用程序被杀死,我想自己重新创建它,再次创建所有片段,就像应用程序第一次启动一样
有可能吗?我不知道有什么方法可以阻止某个活动重新创建其片段。这并不是说没有这样的机制,但如果有这样的机制,它就不是常用的 但构造函数只是将数据导入对象的一种方式。如果您支持零参数公共构造函数,因此Android可以重新创建您的片段,那么您可以:
- 对无法放入
savedInstanceState
捆绑包的数据使用setter,将活动中的数据推送到活动的onCreate()中的片段中,或
- 从片段的
或onAttach()
中的宿主活动中提取数据,或onActivityCreated()
- 在事件总线实现中为此使用特殊挂钩,例如Otto中的生产者或greenrobot的事件总线中的粘性事件,或
- 让片段重新创建数据本身(例如,打开与服务器的新套接字连接,以替换进程终止时丢失的套接字)
可能还有其他模式,但这些模式应该可以帮助您了解如何支持零参数公共构造函数。“我需要具有非空构造函数的片段”——为什么?对无法放入
savedInstanceState
捆绑包的数据使用setter,将活动中的数据推送到活动的onCreate()
中的片段中。或者,从片段的onAttach()
或onActivityCreated()
中的托管活动中提取数据。太棒了!这就是解决办法!