您好我有一个服务运行并且每30秒获取一次位置(因为它在代码(1)中显示)我想存储位置随时可用 我的aproach是作为应用程序上下文中的全局变量存储(因为它在代码(2)和代码(1)中显示)所以,稍后我可以从MainActivity获取它,如代码(3)所示。
代码(1)
public class LocationService extends Service{
@Override
public void onCreate(){
// I have a service here from where I can get Location every 30 secs
{
Location location=// from android api get Location every 30 secs
((App)getApplication()).setLocation(location);
}
}
}
(2)
public class App extends Application{
Location mLocation;
public void setLocation(Location location){
mLocation=location;
}
public Location getLocation(){
return mLocation;
}
(3)
public class MainActivity extends Activity{
@Override
public void onCreate(){
Location location=((App)getApplication()).getLocation();
}
}
我的问题是该方法有效吗?我看到通常用于广播或绑定服务和活动,我从未见过在服务和活动之间分享全局变量,¿为什么?。
任何讨论都很好。
答案 0 :(得分:1)
你的方法是有效的。根据{{3}},您有以下选择:
这些方法中的每一种都取决于具体情况。在我看来,最好将位置存储在静态字段中,并在服务中为该字段公开静态getter方法。