最简单的方法是在单例和更多单元中使用BroadcastReceiver

And*_*rew 2 singleton android broadcastreceiver application-lifecycle

我有一个单例,它存储了一些关于我的应用程序用户的谨慎信息.目前,它存储用户的登录信息和用户的位置.

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

但是,要注册BroadcastReceiver,我需要在我的单例中使用Context.什么是实现我想要的最简单的方法.BroadcastReceiver可能不是合适的对象吗?

2)另外,我使用单身人士时会遇到什么问题?我认为Android可能会在任何给定时间回收这个内存(这显然是坏事); 那我该怎么办呢?是否会传入应用程序的Context并将其存储在成员变量中?

Android文档指出:"但是,静态的生命周期并不在你的控制之下;因此要遵守生命周期模型,应用程序类应该启动并拆除onCreate()和onTerminate中的这些静态对象( )应用程序类的方法,"但我不完全确定如何实现这一点.

Com*_*are 5

但是,要注册BroadcastReceiver,我需要在我的单例中使用Context.什么是实现我想要的最简单的方法.BroadcastReceiver可能不是合适的>对象吗?

"最简单的方法"是不做你正在做的事情.请只注册一个BroadcastReceiverActivity,Service可能Application.在,或被销毁时,您必须取消注册.BroadcastReceiverActivityServiceApplication

我认为Android可能会在任何给定时间回收这个内存(这显然是坏事); 那我该怎么办呢?

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

只把你不介意丢失的东西放在记忆中.

最好将您的"应用程序"视为一堆松散耦合的组件,而不是整体实体.

是否会传入应用程序的Context并将其存储在成员变量中?

没有.

Android文档指出:"但是,静态的生命周期并不在你的控制之下;因此要遵守生命周期模型,应用程序类应该启动并拆除onCreate()和onTerminate中的这些静态对象( )应用程序类的方法,"但我不完全确定如何实现这一点.

Application通过元素上的android:name属性创建一个子类,并在清单中指明Android应该使用它<application>.