2017-03-07 57 views
0

即使活动被完全摧毁,单身还会继续存活吗?我有一些引用的Android位置经理调用服务来做GPS的东西,它工作正常一两个小时(即使应用程序最小化和屏幕关闭),但一段时间后更新将停止ping,我有查看了一些其他堆栈溢出线程,并且我看到了有关Singleton是保持活动还是会在系统需要内存时会被破坏的冲突响应。什么时候Android Singleton被破坏?

如果一个单身人士不是长时间保持参考的好方法,那么另一个选择是什么?

+0

这是一个单身人士。它的生命周期是过程之一 – Blackbelt

回答

1

单身人士的生活取决于你初始化它。您可以使用您的活动对其进行初始化,只要该活动存在,活动只会保持活动状态。

为了保持它的应用层面,实例化辛格尔顿与您Application Context代替Activity Context

UPDATE

另一种方法是使用SQLite数据库(优先)或SharedPreferences(如果存储抛出内存异常很多数据)。

如果您想在整个单次启动过程中使用一些数据,那么Singleton方法非常简单方便。

+0

你可以简单地扩展Singleton的Application类吗?或者你必须创建一个应用程序类,然后把你的单身人士呢?我不使用数据库的原因是因为它存储对不一定只有数据的类的引用。 – ashxu

+1

我创建一个Application类,将Singleton放入它并将此类添加到Manifest。完成工作:D –

+0

应用程序类数据仍将被销毁的条件是什么?只有当应用程序进程被销毁?还是它可以被销毁以释放内存? – ashxu

0

每一个应用程序被启动采空作为一个OSGi容器, 当应用程序被启动类似的东西,那么静态值被创建,当你调用的getInstance会发生同样的,一旦app.onDestroy被称为所有内存被释放,并因此出现了单人破坏...