我有一个Singleton,可以存储有关我应用程序用户的一些审慎信息。目前,它存储用户的登录名和用户的位置。

1)该位置是通过服务找到的。目前,该服务将我的单身人士直接引用将经度和纬度塞入其中。我想使用Broadcastreceiver发送Singleton听到并用来更新值的广播。

但是,要注册Broadcastreceiver,我需要单身人士中的上下文。什么是实现我想要的最光滑的方法。 Broadcastreceiver可能不是适当的对象吗?

2)另外,我在使用单身人士时要考虑什么问题?我认为Android可能会在任何给定时间回收此记忆(这显然很糟糕);那我该如何防止呢?通过应用程序的上下文传递并将其存储在成员变量中吗?

Android文档指出:“但是,静态的生命周期在您的控制之下不太好;因此,要遵守生命周期模型,应用程序类应启动和拆除onCreate()和Onterminate中的这些静态对象( )应用程序类的方法:“但是我不确定如何实现这一目标。

有帮助吗?

解决方案

但是,要注册Broadcastreceiver,我需要单身人士中的上下文。什么是实现我想要的最光滑的方法。 Broadcastreceiver可能不是适当的>对象吗?

“最光滑的方式”是不做您在做的事情。请仅注册 BroadcastReceiver 从一个 Activity, Service, , 或者 也许 一个 Application. 。你 必须 取消登记 BroadcastReceiver 当。。。的时候 Activity, Service, , 或者 Application 被摧毁。

我认为Android可能会在任何给定时间回收此记忆(这显然很糟糕);那我该如何防止呢?

你没有。 Android保留随时终止过程的权利(例如,回收内存)。 Android 2.1和以前的任务杀手将随时终止您的流程。一旦应用程序的所有组件都被销毁,Android就可以随时回收您的流程,同时清理堆。等等。

只将事情放在您不介意输掉的记忆中。

最好将您的“应用程序”视为一篮子松散耦合的组件,而不是整体上的实体。

通过应用程序的上下文传递并将其存储在成员变量中吗?

不。

Android文档指出:“但是,静态的生命周期在您的控制之下不太好;因此,要遵守生命周期模型,应用程序类应启动和拆除onCreate()和Onterminate中的这些静态对象( )应用程序类的方法:“但是我不确定如何实现这一目标。

创建一个子类 Application 并在清单中指出,Android应该通过 android:name 属性 <application> 元素。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top