我正在尝试在使用BLEgatt服务的Android Studio应用程序中实现全局变量。我需要将从BLE收到的数字保存在全局变量中。
所以我创建了这个类:
public class Globals extends Application {
private List<Float> current = new ArrayList<>();
public float getCurrent() {
return current.get(current.size()-1);
}
public void setCurrent(float someVariable) {
this.current.add(someVariable);
}
}
我还用android:name修改了清单。我可以在主活动和某些片段中正确使用这些函数。但我想在与应用程序或活动不同的其他扩展中实现它。
在另一个java文件中,我有这个类:
class SerialSocket extends BluetoothGattCallback {
// Here how can i get the function declared in Globals??
Globals globalClass = (Globals) getApplicationContext();
显然,我不能在蓝牙GattCallback extend中使用getApplicationContext((,但是我可以使用什么代码?
您可以创建全局和访问的静态实例。
public class Globals extends Application {
private static Globals instance;
private List<Float> current = new ArrayList<>();
@Override
public void onCreate() {
instance = this;
super.onCreate();
}
public float getCurrent() {
return current.get(current.size()-1);
}
public void setCurrent(float someVariable) {
this.current.add(someVariable);
}
public static Globals getInstance() {
return instance;
}
public static Context getContext(){
return instance;
// or return instance.getApplicationContext();
}
}
现在,在应用程序中的任何地方,您都可以访问当前变量或通过以下方式更改值
Globals.getInstance().getCurrent();