您好,我有一项服务正在运行并每 30 秒获取一次位置(如代码 (1) 中所示)我想存储位置以便随时可用 我的方法是在应用程序上下文中存储为全局变量(如代码(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();
}
}
我的问题是这种方法有效吗?我看到它通常用于广播或绑定(bind)服务和 Activity ,我从未见过在服务和 Activity 之间共享全局变量,¿为什么?。
欢迎讨论。
最佳答案
您的方法是有效的。根据android developer site您有以下选择:
- 将数据放入 Intent 中
- 单例类
- 公共(public)静态字段/方法
- 对象的 HashMap 或 WeakReferences
- 使用共享首选项
- 放入数据库
这些方法中的每一种都取决于具体情况。在我看来,最好将位置存储在静态字段中,并在您的服务中公开该字段的静态 getter 方法。
关于android - 通过全局变量通信服务和Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25281057/