【发布时间】:2014-11-08 20:46:12
【问题描述】:
我有一个从用户那里获取位置信息的应用程序,并且会消耗电池,因此完全不希望频繁地请求位置信息,因为除非用户手动刷新,否则该应用程序只需要 1 次。
所以问题是,我注意到有时即使我将它存储在 onSave 并在 onCreate 中恢复它的值也是空的,所以垃圾收集器正在做它的工作(应用程序使用位图分配,方向变化也可能发生,所以我认为这并不奇怪),现在我正在考虑对应用程序进行子类化以保持对位置变量的全局引用,但有几个人反对这一点(主要是反对静态变量)所以我想知道是否有任何替代方案。在 SharedPreferences 中存储值对我来说似乎不是一个好的/干净/快速的选择,磁盘甚至更少,因为如果应用程序被销毁,位置并不重要,只要应用程序正在运行并避免垃圾收集器。
谢谢
保存价值
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putParcelable("mCurrentLocation", mCurrentLocation);
...
}
恢复价值:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState != null) {
mCurrentLocation = savedInstanceState.getParcelable("mCurrentLocation");
...
}
...
错误:
Location location = ((mainActivity) mActivity).location;
userLongitude = String.valueOf(location.getLongitude()); //null sometimes!, not always
【问题讨论】:
标签: performance android-activity android