安卓 - 在活动之间共享位置信息

3
什么是在活动之间共享位置信息的最佳实践方法? 例如:
  • Activity1(主要)根据用户当前位置(纬度和经度)显示数据
  • Activity2显示附近用户当前位置的谷歌地图上的数据
  • Activity3显示靠近用户当前位置的日历事件
每个活动将通过发送当前位置调用特定的Web服务方法。
我问这个问题是因为我很困惑:
  • 我应该创建Location对象的静态引用(在主活动中获取用户位置)并在其他活动中使用该对象。
  • 每个活动都有自己的实现来获取用户位置。
谢谢

我也想知道正确的做法。 - Eduardo
2个回答

3
如果您希望在导航活动时位置保持不变,请在启动意图中传递它,并让每个活动维护数据的副本。
另一方面,如果您希望在所有三个活动中动态更新位置,则应考虑创建一个服务来侦听位置服务。然后,您的活动可以绑定到该服务并接收更新。这确保您不会出现多个侦听器漂浮,并意外地使位置侦听器保持更长时间。它还为您提供了一个单一的地方来维护任何必要的设置(例如用户选择退出、频率和精度等)。

0

在编程中,将信息从一个活动传递到另一个活动非常容易。当您创建一个意图(intent),用于启动另一个活动时,您可以附加额外的信息到该意图,新活动在启动时可以访问这些信息。

下面是一个示例:

要将信息从一个活动传递到另一个活动,您可以执行以下操作:

Intent i = new Intent(this, OtherActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.putExtra("variableName", "variable value");

然后在另一个活动中,您将执行以下操作

Bundle extras = this.getIntent().getExtras(); 
String var = null;

if (extras != null) {
    var = extras.getString("variableName");
}

你不仅可以传递字符串、整数等基本类型,甚至可以传递对象。继承Parcelable类的子类对象也可以被传递。将Parcelable添加到Intent中只需:

i.putExtra("variableName", instanceOfMyClass);

在新的Activity中,您只需调用以下代码:
MyClass obj = (MyClass) extras.getParcelableExtra("parcelableName");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接