2014-09-25 51 views
0

版本的Android方案这是怎么我安排我的数据:这让我为难,

  • 我创建了一个应用程序类在我的Android项目
  • 应用程序类我有一个ArrayList对象
  • 在其他活动我叫应用类的一些方法,返回给我的上述名单

现在让我为难的情景的一部分: 在一定ACTIV两者均如果按下按钮

  1. 我检查是否有互联网连接
  2. 如果没有一个我开始的意向来打开设置为用户启用移动网络或WiFi

当它返回虽然它看起来应用程序被破坏,因为onCreate被再次调用,但在那个时候我的应用程序类中的arrayList是这个时间为null。所以我的问题是

  • 为什么我的活动被摧毁,而不是只是暂停?
  • 如果它被破坏,为什么我的应用程序不会从一开始就自行启动,但它仅从启动Activity Action.Settings的Activity启动?
  • 如果只有最新的Activity被销毁而不是整个应用程序,那么Application中的数据如何丢失?

这是我是如何声明的对象的ArrayList在我的应用程序类

 private static ArrayList<PointOfInterest> pois; 

编辑:我把一的onDestroy Log.i()()活动,这是从未打印过。但是,当我从Settings中返回时,onCreate()被调用(没有调用onDestroy),那怎么可能?

+0

'为什么我的活动破坏,不只是暂停?'因为OS决定终止该应用(缺乏resouces,PMS等......,不要理会为什么)...'如果它被破坏了为什么我的应用程序不会......“因为系统是”记住“你在你的应用程序中使用的最后一个活动,并返回到它'如果只有最新的活动被销毁,而不是整个应用程序......'你是正确的关于它...结论:整个应用程序被杀害... – Selvin 2014-09-25 13:14:34

+0

@Selvin为什么评论,不只是回答它?尽管非常感谢你,但我还是让你知道了吗? – Libathos 2014-09-25 13:19:06

回答

1

当应用程序在后台时,静态字段可以被os取消。 所以他们应该永远恢复。

see this post

+0

not nullified ...简单地创建应用程序类的新实例,因为旧的一个被OS所杀...问题是,他没有设置这些字段onCreate应用程序,但在一些活动中...应该没有问题如果只有一个活动...但是如果在ActivityA中他设置了这些值,并且ActivityB位于堆栈顶部并且应用程序被终止,并且他返回到ActivityB,则ActivityA中的代码永远不会被调用。 – Selvin 2014-09-25 13:05:53

+0

@Selvin Ok但是我不要以为我可以覆盖应用程序类 – Libathos 2014-09-25 13:12:02

+0

中的onSavedInstanceState()否...使用一些持久存储来保存数据(SharedPreferences/database) – Selvin 2014-09-25 13:13:23