我想以特定的时间间隔在两个活动之间传递参数。传递的参数是一个int,表示设备看到的卫星数,用于在第二个活动中绘制图表。
答案 0 :(得分:2)
如果在不需要时正确停止GPS,那么在这两项活动中保持GpsStatus监听器都没有坏处。 :)
但无论如何,如果我是你,我会让Application类坚持这些细节。我使用服务来监听GpsStatus,Application类绑定到此服务。您的Application类现在是网关。您的活动现在可以顺利地与应用程序数据进行通信,而不是笨拙的意图。
此模式取自here
答案 1 :(得分:0)
您可以使用shared preference将int存储在两种活动都可以访问的变量中。
否则,尝试custom intent并在一个或两个活动中实施接收器。这是 little 更难实现,但是对于接收器,您可以在值发生变化时立即采取行动。
如果在时间间隔内执行此操作非常重要,请使用共享首选项;-)
答案 2 :(得分:0)
您还可以在两个活动之间传递捆绑包。该Intent可用于存储
PutIntent
中的参数值。
此处提供更多信息:http://remwebdevelopment.com/dev/a33/Passing-Bundles-Around-Activities.html
答案 3 :(得分:0)
你很可能试图以一种奇怪的方式做某事,因为你还没有完全理解Android中的活动是如何运作的。
整个应用中只有一个活动的Activity。只有当用户通过单击按钮并切换到新活动或通过单击返回并返回上一个活动来更改活动活动时,才需要将数据从一个活动发送到另一个活动。请仔细阅读Activity Lifecycle以了解应如何使用活动。
我假设您已在一个活动中注册了位置监听器,并尝试在其他活动中使用此监听器的值。通常,您将使用onPause方法在第一个活动中停用监听器,然后在新活动中激活一个新监听器。这将为您提供每项活动中已知卫星的数量。如果用户返回,则必须使用onResume方法重新注册侦听器,以重新启用新活动的gps更新。
即使您的应用程序处于后台并且不再使用,保持活动的GPS监听器处于暂停的活动状态也会导致活动的GPS传感器。这会非常快地耗尽手机电池,很可能会在一个实例中卸载您的应用程序。