【发布时间】:2015-01-18 22:39:30
【问题描述】:
我有一个重载 onPerformSync 的 SyncAdapter。在这种方法中,我想访问 sharedpreferences 来获取和放置设置。据我了解,为此我需要访问上下文。 SyncAdapter onPerformSync 有一个 bundle 参数,也许我可以用这种方式发送上下文。
在类似的问题中,我有另一个基类(不是服务或活动),我也对使用 sharedPreferences 感兴趣。为此,我要么需要将上下文传递给类中的方法,要么使用上下文实例化它,然后将其保存为私有成员。
在这两种情况下,我都明白,在与上下文关联的活动或服务的生命周期之外保留和使用上下文可能会导致内存泄漏。
就我而言,我的应用程序可以从广播接收器或主要活动开始。广播接收器启动一个后台进程,而主活动只是启动主活动。无论哪个先打开,都会定期注册 SyncAdapter 更新并打开另一个类。因此,如果我要传递调用活动或服务的上下文,如果其中任何一个关闭会发生什么? SyncAdapter 或基类将使用过时的上下文,并且...内存泄漏?或者上下文是否会恢复到仍在运行的状态?
我也看到了解决方案:(Static way to get 'Context' on Android?),但这能解决什么问题吗?然后,我将拥有一个活动上下文、一个应用程序上下文和一个服务上下文。同样的问题对吗? SyncAdapter 可能最终会保留已关闭的上下文,不是吗?
根据此处的第一个答案 (SharedPreferences application context vs activity context),我很想使用上一个链接中列出的应用程序单例,但我想确定一下。谢谢
【问题讨论】:
标签: java android android-context android-syncadapter